Skip to content

minipuft/claude-prompts

v4.0.1MIT

Model Context Protocol (MCP) server for versioned prompt templates, multi-step workflow chains, and quality gates. Symbolic syntax: >>prompt --> >>chain @framework :: 'gate'

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

4.0.1 (2026-08-16)

Fixed

  • ci: verify the registry entry flagged latest, not the first one returned (5cef21e)
  • make gate abort terminal, and stop prose punctuation parsing as arguments (f4452ce)
  • prompts: bind prompts per serving unit, resolve content at call time (#227) (e2297de)

Documentation

  • docs: correct the origin SHA in the phase-guard plan (#221) (06e88da)
  • docs: plan the phase-guard declaration contract (4125d25)
  • docs: retire the agent-plugins and plan-retirement plans (2b784e9)
  • docs: retire the agent-plugins migration as reference (00d1811)
  • docs: retire the plan-retirement federation as reference (ea74eee)

4.0.0 (2026-08-15)

Added

  • GitHub-native planning pilot. Repository intake now distinguishes unresolved Discussion ideas from accepted Issues, repairs Issue-form links, and provides the local pilot for a dry-run-first Discussion → Issue → Project → plan → PR lifecycle.
  • Patch-mode prompt editing. resource_manager action:"update" accepts patch — anchored old_string/new_string operations over user_message_template, system_message, and description — so a one-section edit no longer retransmits the whole prompt. Anchors are exact-match and uniqueness-checked with typed rejections (empty_old_string, target_absent, anchor_not_found, anchor_ambiguous); a rejected patch writes nothing and consumes no version. dry_run: true previews the produced text and diff without writing. Both are update-only — create rejects them explicitly.
  • All five preserved prompt fields are now authorable through the tool. injection, register_with_mcp, mcp_prompt_mode, subagent_model, agent_type join resource_manager create/update as optional parameters (additive, non-breaking). The two resolution-hierarchy fields carry an explicit freeze-hazard warning in their descriptions: setting them overrides category/global defaults permanently until unset.
  • Category ship-signal. Creating or updating a prompt in a category excluded by server/resources/prompts/.gitignore now appends a warning naming the allowlist file and the exact lines to add — previously the tool reported success identically whether the prompt would ship or stay workspace-local. The planning/ category is now allowlisted, so the implementation-planning chain ships with the repo.
  • Per-step visibility policy. A chain step's YAML may declare visibility: { withhold: [...], expose: [...] } over three server-sourced context items — previous_step_output, chain_history, unknowns_ledger. A withheld item stays out of every later step's render (replaced by a named [CONTEXT WITHHELD] instruction) until a step explicitly exposes it, for that step only; a ==> delegated step's handoff envelope excludes withheld items and carries a names-only manifest line instead. Withholding covers only what the server sources — the server cannot unsee the client's window, and true isolation remains the ==> delegation operator; the docs now state that ceiling explicitly.
  • prompt_engine accepts a workflow parameter — a structured, node-addressed workflow IR, mutually exclusive with command and chain_id. It is validated server-side against schema and structural budget caps (maxNodes 32, maxFanOut 8, maxInsertions 3, enforced and narrow-only) and then compiled into an ordinary chain run — the resulting chain_runs/chain_run_nodes rows are structurally identical to an equivalent >>chain's, and there is no IR-specific execution path. edges are dependencies, not branches: they linearize into one run order (Kahn's algorithm, ties broken by declaration order); there is no branching runtime. An invalid workflow is rejected with one addressed line per problem naming the offending node/edge and rule, and writes nothing — no run, no session, no version. IR nodes can carry every field the runtime consumes that the string command grammar cannot express — stable node ids, per-step visibility, gate bindings (gates, inlineGateIds), delegation hints (subagentModel, agentType), and inputMapping/outputMapping. A declared declaredCostCeiling is recorded on the run's terminal telemetry and never enforced. See Workflow IR Reference.
  • Chain steps accept a framework field, selecting the framework for that step alone. It outranks the run-wide default and yields to an explicit ^Framework operator on the command; an id the registry does not know falls back to the run-wide framework rather than failing the load.
  • Documentation governance now routes public-doc changes through a versioned documentation_change chain, with focused gates for product positioning, information placement, semantic discoverability, and prose hygiene.
  • prompt_engine accepts an optional observations parameter — chain steps declare typed unknowns (discovered/resolved) that accumulate in a per-run ledger and surface in subsequent step context.
  • execution_records now records per-run telemetry (steps planned/executed, gate verdict submissions, the FAIL subset of those submissions, unknowns opened/closed) as record-only facts on terminal rows, surfaced as one plain-text line per session by system_control execution_history. No scoring, weighting, or routing decision is derived from these fields. Schema v21 — execution_records is ephemeral, so existing rows do not survive the bump.
  • Adaptive chain mutation v1 — a blocking unknown inserts one investigation step; an irrelevant-resolved unknown skips its declared target step; both audited on the terminal execution record (nodes_inserted/nodes_skipped) and capped per run (1 insertion per unknown id, 3 per run). The model only ever declares typed observations; the server owns every graph edit, in reaction to a declared observation only. Schema v23 — chain_run_nodes gains origin/origin_unknown_id provenance columns.
  • agent-plugins migration, codex fleet integration, and brand system for 4.0.0 (3d402fe)
  • chains: add per-run unknowns ledger via prompt_engine observations param (0bdbfbe)
  • chains: add record-only per-run telemetry to execution_records (2e84bb3)
  • chains: per-step visibility policy + step-scoped gate review (P5) (c07a80c)
  • chains: planner-submitted workflow IR compiled to ordinary chain runs (56d8e26)
  • chains: stable node identity, per-row run storage, and adaptive mutation v1 (951db98)
  • ci: publish server.json to the official MCP registry on every release (5b9ca4b)
  • ci: ship the new mark as the desktop extension icon (b165014)
  • ci: ship the new mark as the desktop extension icon (d2ff78a)
  • ci: sync codex-prompts with the fleet on every release (dcfc124)
  • docs: pilot GitHub-native planning lifecycle (237b0ca)
  • docs: promote the approved mascot into a canonical brand system (de19f56)
  • execution: publish the resolved shell-verify budget and correct force_restart (d76f741)
  • gates: add documentation governance gate suite (0beda2d)
  • hooks: add hook-harness traced verification and registration dead-wiring detection (b216289)
  • main: integrate unreleased 3.3.0 work (c5a7813)
  • main: integrate unreleased 3.3.0 work (#211) (c5a7813)
  • mcp-tools: enforce confirm on prompt delete; remove the checkpoint resource type (2c3b872)
  • mcp-tools: patch-mode prompt update, argument contract repair, ship-signal (P7 T1/T3/T4) (1210977)
  • planning: federate plan retirement (621991a)
  • planning: federate plan retirement (9bd68db)
  • planning: federate plan retirement (#209) (621991a)
  • prompts: per-step framework declaration; reject unknown chain-step keys (0e8b787)
  • resources: add documentation governance prompt workflow (5f2a1ae)
  • resources: ship the planning/ prompt category (P7 OQ-P7-7, T5) (15462ed)
  • scripts: commit row 1.5's version registration and its manifest parity (ce8b3d8)
  • scripts: declare what each gate reads, and test the rewriter against the corpus (e582adc)
  • scripts: fail when a validate/verify script is wired to nothing (a295645)
  • scripts: gate framework coverage and the README's shipped-prompt count (f90b024)
  • scripts: render the published manifests from the canonical tree (c93034c)
  • scripts: require a gate declaring closedBy to audit its exceptions (ee1478e)
  • scripts: ship no skills by default; gitignore the export output (16b1a09)
  • server: commit row 1.4's agent-plugins skills-sync registration (5f20ff9)
  • server: commit Tier 1's deliverables, which were never committed (31e0638)

Changed

  • BREAKING — confirm: true is now required to delete a prompt. resource_manager(resource_type: "prompt", action: "delete") refuses without it and names the chains that would break. The parameter's schema text has always described it as delete's safety gate, but only rollback read it — the guard sat on the recoverable verb and was absent from the unrecoverable one. Deletion has no undo through the tool surface: a deleted prompt's version_history rows survive, but rollback reports "Prompt not found" once the prompt is gone, so those snapshots are unreachable by any action. Scripts calling delete must add confirm: true.
  • BREAKING — chain steps reject unknown keys. chainSteps entries in prompt YAML are validated strictly; a key with no schema field now fails the prompt's load, naming the key and its step index, instead of being silently discarded. A typo like framwork: ReACT previously parsed to a normal-looking step and ran the chain under the wrong framework with no signal — the same silence left six inlineGateIds declarations dead across three shipped chains. Every key with a real consumer was declared first, including delegation, which no code in the prompt module reads but the skills-sync exporter reads straight off the YAML.
  • Renovate hosted reruns now use a dry-run-first request script that verifies local/remote config parity, strict protected checks, full-SHA Actions enforcement, successful Renovate and Release Please checks on main, and the exact dashboard request marker before changing GitHub state. Automated lock maintenance retains Renovate's three-day npm resolution cutoff while treating the timestamp-less synthetic maintenance update as timestamp-optional, preventing a permanent renovate/stability-days block.
  • frameworks: retire the pre-rename methodology back-compat folds (05b6efc)
  • scripts: port no-crosslayer-relative to dependency-cruiser and retire the guard (3837b91)
  • scripts: scope shipped-content gates by git, not filesystem walk (8468c4a)

Removed

  • BREAKING — the checkpoint resource type is gone. resource_manager(resource_type: "checkpoint", ...) and the clear action are removed from the tool surface, along with the GitCheckpoint module behind them. Every checkpoint action returned "Checkpoint manager is not available" under every configuration: the handler was defined and exported but never constructed, so a quarter of the published resource_type enum could not succeed. Reinstating it was rejected rather than deferred — the actions were git stash push/pop/drop wrappers, and exposing stash manipulation to a client silently discards uncommitted work belonging to anyone else sharing the working tree. Nothing depended on it, since no call could ever have returned success.
  • BREAKING — the pre-rename methodology* back-compat folds are retired. The methodology→framework rename shipped in v3.0.0 with fold-forward support for the old spellings; those folds are now deleted. Six input spellings stop being accepted, and in every case but one they fail by silently falling back to the default rather than erroring:
    • framework YAML methodologyGates: → use frameworkGates:
    • gate YAML pass_criteria.methodology: → use framework:; and type: methodology_complianceframework_compliance (this one throws at parse, being a closed enum)
    • config.json gates.methodologyGatesgates.frameworkGates; the top-level methodologies: section and resources.methodologies are no longer adopted into their frameworks equivalents
    • resource_manager authoring payload methodology_gates / methodology_elementsframework_gates / framework_elements
    • prompt-template placeholder {METHODOLOGY}{FRAMEWORK_TYPE} Marked breaking because the framework/gate YAML schemas and config.json are declared API surface. Shipped in a minor by explicit maintainer decision — the pre-rename spellings have been unsupported since v3.0.0 (2026-07-31), and the only spelling measurably outside the declared contract was the resource_manager authoring payload. If you hold a workspace resource written before v3.0.0, rename the keys above before upgrading.

Fixed

  • Version history now records what an edit produced, not what it replaced. Version N holds the state edit N produced (go-forward numbering), so the newest version always equals what inspect shows; unrecorded prior state is bridged in automatically, rollback validates its target before writing anything, records the restored state as a new Rollback to vN row, and restores snapshots exactly — the old snapshot ?? live hybrid merge and the "Pre-rollback snapshot" rows are gone. A failed version save now aborts the update instead of logging and proceeding.
  • Tool schema stopped silently discarding argument fields. The arguments items on prompt create/update now accept required, defaultValue, and validation, and type is the loader's 5-value enum — previously Zod stripped them at the first boundary while 45 shipped prompts declared required: true.
  • Chain step labels retired their stale phase vocabulary. The implementation-planning chain's five stepName labels (and two prose references) now carry the sub-prompts' own (Step N) names instead of (Phase N) numbering that no longer exists.
  • Step-targeted gates now review only their target step. A gate bound to a node id (or step number) previously entered the run-wide review accumulator, so a gate "on step 3" reviewed every step — targeting scoped guidance injection only. Review participation is now carried per-step (reviewGateIds), with untargeted gates keeping their run-wide inheritance and single-prompt runs byte-identical. The two residual fallback paths are also closed: a mutation-inserted node inherits its triggering unknown's target gates, and a skipped step triggers no review at all.
  • A step-level subagentModel now marks its step delegated on any chain invocation, not only after a ==> operator. OperatorValidationStage returned early on an empty operator set before delegation normalization ran; the direct (non-symbolic) >>chain path always has an empty operator set, so a YAML-declared subagentModel parsed but produced no delegation CTA or handoff envelope unless the command also spelled ==>. Delegation normalization now runs before that exit. agentType alone still does not mark a step delegated — it only selects which agent a ==>-delegated or subagentModel-marked step uses.
  • Handoff visibility (and the delegation CTA/envelope it feeds) is now resolved by node identity instead of array position. resolveHandoffVisibility indexed the parsed step blueprint by nextStepIndex, so after an adaptive mutation inserted or skipped a node, the visibility declarations resolved belonged to the wrong step. The run's live next-node id is now asked for directly and matched back to the step it names; a withhold declared by a step the mutation policy retired (skipped) no longer applies to a step that does run. Runs with no mutation and chains with no declared node ids are unaffected.
  • Named outputs (outputMapping) now publish under a reserved outputs.<name> namespace ({{outputs.findings}}) instead of a flat template key ({{findings}}), and are removed together with the rest of chain history when a step withholds chain_history — previously a withheld alias still leaked through because stripChainHistory could only delete regex-identifiable positional keys. {{findings}} is no longer published; existing authors must migrate to {{outputs.findings}}. No shipped chain declared outputMapping at the time of this change. Each key of outputMapping still receives the step's whole output — the declared value is not read (documented, not newly broken).
  • ci: assert the codex-prompts marketplace entry, which nothing checked (769b023)
  • ci: consume repository-standards v1.3.0 so retirement stops restyling docs (4c6cde7)
  • ci: consume repository-standards v1.3.0 so retirement stops restyling docs (23af8b4)
  • ci: make registry publish idempotent and fix the verify jq path (b845930)
  • ci: rebuild the marketplace source guard where it runs (852830b)
  • ci: ship package.json in the claude-code-plugin staging too (edb037c)
  • contracts: anchor the gate operator's examples and gate registry self-consistency (18d2f7a)
  • deps: consume repository-standards v1.2.1 so retirement ignores sidecars (93ebbe9)
  • deps: patch OTel advisories via 0.221.0 bump; retire stale protobufjs override (b3f76b8)
  • docs: repoint dead cross-references in the retired plan set (18fa3fe)
  • execution: resolve handoff visibility by node id, not array position (P6 T2, P4-F2/P6-F1) (db966f8)
  • gates: close the last two fallback-to-run-wide review paths (P5 4.4/4.5) (b6cceb5)
  • gates: unref temporary gate expiry timers (528647f)
  • hooks: delegation enforcement deadlock (mention-vs-use arming, gate sentinel, Agent tool clear) (3073dfd)
  • parsers: commit D3's remaining ^ sites, which never landed (572789d)
  • parsers: commit the providers 8875ab42 left behind (f54ab79)
  • parsers: commit the reserved-operator rejection its tests already assert (08dd126)
  • parsers: repair operator registry SSOT, unbreaking ^ in chains (f2336ac)
  • pipeline: make YAML delegation reachable on the direct chain path (P6 T1, P5-F5) (a5097a5)
  • release: accept Release Please manifest formatting (a1c6333)
  • release: accept Release Please manifest formatting (0a8cb30)
  • release: synchronize Agent Plugins manifest (9c4c088)
  • release: synchronize Agent Plugins manifest (4daf326)
  • resources: avoid methodology-vocab false positive in readme_improver (3bf8c9a)
  • resources: retire methodology vocabulary from planning prompts (d624481)
  • runtime: apply preset timeouts, clear the loader cache on reload, reject reserved + in chains (8875ab4)
  • runtime: claim the SqliteEngine singleton at the composition root (741afe5)
  • scripts: allowlist tracked-scope.js in the vocabulary guard (d1b03ea)
  • scripts: commit the two validate scripts a2956450 wired to nothing (727f802)
  • scripts: re-resolve the downstream lock with npm update, not npm install (a6bfef8)
  • scripts: resolve build outputs in the agent-plugins consumes check (b85f3fd)
  • scripts: scan the tracked set so the vocab guard can see dot-paths (5af52f5)
  • scripts: stop the plan-row self-test depending on where a real plan lives (2e143f8)
  • scripts: stop the tests-typecheck ratchet reading a parse failure as a clean backlog (8428e3e)
  • scripts: widen eslint ratchet target to scripts/ and eslint-rules/ (1a96887)
  • server: repair injection continuation, nested-prompt ids, doubled banner literal (2286bcb)
  • server: version history records what an edit produced, not what it replaced (P7 T2) (08b001f)

Documentation

  • docs: adaptive-chain-runtime master plan + P1 unknowns-ledger plan + staged P0 template (1c87f4a)
  • docs: add a square 512px icon derived from the logo for directory listings (c874040)
  • docs: add Tier 6 + Agent Plugins migration plan (single source tree, rendered distributions) (713f520)
  • docs: bring Tier 2b current — registry+Smithery live, Glama claimed, PulseMCP baseline (a6ca08b)
  • docs: close 0.5b Workstreams A/B/C, file the checkpoint finding as 0.5.26 (ec73f85)
  • docs: close 4.0.1, unblock 4.4, row the unmeasured install path (13e2ba2)
  • docs: close 4.10 by deletion, row the unvalidated marketplace PR path (0328f21)
  • docs: close 4.4, ship 4.12's capability, record the 4.0.0 verification (2a6e980)
  • docs: close 4.5, record shape A as implemented, row the last unobserved link (584f6db)
  • docs: close 4.8 from a live marketplace install, row same-name shadowing (30f2207)
  • docs: close all release gates — v3.2.1 finalized across every surface (009d952)
  • docs: close E9/E10, file E11 — a ✓ did not mean committed (37b012e)
  • docs: close the push sequence, row the SIGPIPE flake (6c1d213)
  • docs: close the Renovate remediation plan — the canary merged itself (3490711)
  • docs: close Tiers 2-3, mark the falsified premises (c5405be)
  • docs: close Tiers 5-6, apply the owner rulings (0e9c3ef)
  • docs: close Workstream D and E6, correct the D1/D3 site claims (47636b0)
  • docs: confirm 4.5 — a git-sourced Codex install has no runtime (84aa445)
  • docs: correct the downstream consumption model (a4e51ca)
  • docs: defer Tier 5 — Codex integration + rendered-distribution decision (9f2922e)
  • docs: documentation governance policy and client-install CTA correction (4bb8955)
  • docs: file E8 for the two foreign validate:all reds (7fcdc4e)
  • docs: file E9/E10 — the committed state was six gates behind the tree (6a3bab3)
  • docs: finalize Tier 4 — close the shipping lane, name every open blocker (d8c806f)
  • docs: flush the extension-icon findings to the deviation log (7ff6fab)
  • docs: keep each retiring plan with its own deviation log (b91a260)
  • docs: link Workflow IR reference from docs index (06d9630)
  • docs: mark the brand-asset plan finished (b11624a)
  • docs: p1 live drive complete — success signal observed; p0 template applied (0013955)
  • docs: patch mode, version semantics, visibility fields, ship-signal (P5/P7) (7897f7e)
  • docs: queue adaptive-chain-runtime plans for retirement at release (c88ebb2)
  • docs: queue claims-conformance suite design (token-free functional validation) (7dc83ae)
  • docs: record accepted-work lifecycle (9232acd)
  • docs: record Codex skill repair (a9b4df1)
  • docs: record commit-preparation verification trail on P6 companions (1f2e8fb)
  • docs: record E7 — the gate that watched the wrong tree (717e792)
  • docs: record final commit-preparation verification trail (f6da764)
  • docs: record further commit-preparation verification trail (ce07dc4)
  • docs: record GitHub Project rollout (0481033)
  • docs: record HEAD verification runs in the implementation ledger (ac07fd1)
  • docs: record orphan cleanup + nested-delete fix in p1 notes (5e89d28)
  • docs: record p1 unknowns-ledger implementation notes + status writeback (c809943)
  • docs: record P5 compile-closure verification runs (5ce70a7)
  • docs: record p5/p6/p7 plan writebacks and implementation notes (a2af74d)
  • docs: record P6 plan writebacks + master-plan closure (860af13)
  • docs: record PR linkage fallback (89d6cb2)
  • docs: record sub-agent delegation contract plan (ab8ded5)
  • docs: record the auto-merge-on-major finding (59f3c3d)
  • docs: record the breaking bundle and close its plan rows (82cf4cd)
  • docs: record the migration-exposed retirement defect and release validation (fdc7ea0)
  • docs: record tiers 0.8-4.3, and what the probes got wrong (4bc3b6b)
  • docs: retire codex-prompts-port and downstream-standards-federation plans to reference (f011130)
  • docs: retire E8, flush the retirement deviations (e8f84ef)
  • docs: retire the Renovate notes with their plan (a61479f)
  • docs: retire the Renovate notes with their plan, not after it (274a0de)
  • docs: retire Tier 5 into Tier 6; draft step-10 awesome-claude-code form for owner (2add00d)
  • docs: row the codex distribution shapes, flag the same risk in gemini (fec8a60)
  • docs: row the npm ruling and the codex staleness before Tier 4 (27cb02a)
  • docs: row the release-time sync, correct what joining the fleet costs (f850cd7)
  • docs: shipped prompt count 27 -> 28 (5862564)
  • docs: stamp the open planning rows, log the release-readiness sweep (26352a9)
  • docs: state the resource:// opt-in, correct the prompt count, close Tier 0.5 (1044afd)
  • docs: track the brand-asset plan and close its acquisition-recovery row (faf69ae)
  • docs: workflow IR reference + chain docs lockstep + CHANGELOG (af4a8c5)
  • planning: bind retirement plan to issue 210 (b2fb2de)
  • planning: record GitHub lifecycle linkage (af83915)
  • planning: record isolated review handoff (5d42f97)
  • planning: record mainline delivery linkage (384c76c)

⚠ BREAKING CHANGES

  • prompts: chain steps are validated strictly. A key with no schema field now fails the prompt's load, naming the key and its step index, instead of being silently discarded.
  • mcp-tools: resource_manager(resource_type: "prompt", action: "delete") now requires confirm: true, and the checkpoint resource type and clear action are removed from the tool surface.

Maintenance

  • release: target 3.3.0 (91d7bc1)
  • target 4.0.0 for the breaking release (2d00cd6)

Unreleased

3.2.1 (2026-08-07)

Fixed

  • ci: ship package.json in the plugin dist layout; patch protobufjs to 8.7.1 (655f324)

3.2.0 (2026-08-07)

Added

  • Codex CLI support seams: generic PLUGIN_ROOT workspace resolution, a codex exec spawn strategy (SpawnConfig.client + CodexModelStrategy), and a codex skills-sync registration — consumed by the new codex-prompts downstream plugin.
  • chains: let a prompt choose which subagent its delegated steps spawn (8a4c066)
  • ci: retire finished plans at release and gate the misclassification (15a71d4)
  • hooks: add the codex client seams to the shared hook library (98e7f4e)
  • hooks: require every shipped hook to be registered, and retire session-skills (e6c19eb)
  • mcp-tools: build the prompt_engine surface from state and take gate verdicts structurally (d27bafa)
  • runtime: reject the removed sse transport instead of substituting one (21d715f)
  • runtime: serve both protocol eras over STDIO and route list-change events (96957d2)
  • runtime: serve MCP protocol revision 2026-07-28 over stateless HTTP (d1400b9)
  • scripts: detect state fields that have readers and no writers (9b3d1fc)
  • scripts: give the one-time durable exclusion a retirement condition (36ff257)
  • scripts: sort finished plans out of the working set by status (8504088)

Changed

  • The analysis config section is deprecated, and no longer settable from either tool surface. A config.json carrying it still loads with its values intact — the section is parsed and ignored for one deprecation cycle, and the server now warns once at startup naming the replacement. What is withdrawn is the ability to set it: cpm enable analysis reports Unknown subsystem, and both cpm config set and system_control config reject the five analysis.semanticAnalysis.… keys. Scripts that set them were previously writing values no runtime path read; they now receive a non-zero exit instead of a silent no-op. Delete the analysis section to silence the warning. The section itself is removed in the next major.
  • llm_self_check gate criteria no longer consult configuration. The reserved type is unchanged in the gate YAML schema and still auto-passes, so gates declaring it are unaffected. Its skip message previously told the reader to enable a config key that no longer exists; it now names %judge and shell_verify.
  • Prompt analysis feedback is no longer suppressed by a disabled flag. resource_manager prompt create/update responses previously printed ⚠️ API Analysis Disabled and withheld gate suggestions whenever the LLM flag was off — which was every installation, since it defaults off. The underlying analysis is rule-based and needs no model, and a sibling code path already ran it ungated, so the suggestions now always appear.
  • chains: give the chain run-identifier format one owner (f4ad2a1)
  • chains: rename tenant_id to run_owner_pid and repair the view that never read it (a0dc36f)
  • execution: drop six ConvertedPrompt fields no producer ever set (d66356a)
  • execution: give auto-approve partitioning to the filter that already partitions (15270fd)
  • gates: delete the gate retry re-entry API, which had no callers (7a43f99)
  • gates: delete the unreachable enforcement-decision cache (335a8b6)
  • gates: move the shell-verify clearing decision to its owner module (20b795e)
  • mcp-tools: delete the dead ContextBuilder rather than consolidate it (05ab145)
  • pipeline: delete the two judge-selection channels that never had a producer (76630b7)
  • pipeline: extract execution metric payload derivation (b840472)
  • pipeline: move framework-requirement predicates out of the stage (a25aaf2)
  • pipeline: stop deriving the framework requirement twice (6479ab1)
  • runtime: express the version_history cleanup as a schema bump, not resident code (92b1dcd)
  • runtime: extract list-change routing and cover both transports (0f5437f)
  • scripts: retire four guards, re-home them, and share one definition of a live exception (c4b920b)
  • server: delete 11 unreachable types and the analyzer's unread config (558e4dc)
  • server: delete the last nine unreachable types in shared/types (675095f)
  • server: remove the 76 dead symbols the unused-locals sweep reported (31dd755)
  • server: retire the semantic LLM side client, which never ran here (d219f8b)

Removed

  • The semantic LLM side client is gone — roughly 2,200 lines across an outbound provider client (LLMClient + factory), the gate service that consumed it, the dual-mode analyzer's model branch, and an 863-line framework-integration module that was never constructed. None of it ever ran: it was reachable only when analysis.semanticAnalysis.llmIntegration.enabled was true, that flag defaults to false, and the only spelling the CLI ever wrote (…llmIntegration.mode) reached no reader. Model-graded gate review is served by judge mode — the %judge modifier and gates.evaluation.defaultMode — which delegates to the client's own sub-agent and returns through gate_verdict, so no API key is configured, stored, or sent anywhere.
  • The undocumented MCP_LLM_* environment variables (MCP_LLM_ENABLED, _API_KEY, _ENDPOINT, _MODEL, _MAX_TOKENS, _TEMPERATURE). They were never listed in the declared environment surface.

Fixed

  • Codex prompt resource activation: the downstream launcher now reads a persistent user-level resource path while keeping mutable MCP state under the OS temporary runtime root; the curated 26-prompt package catalog remains the default.
  • Structured gate verdicts are now hook-enforced: hooks/gate-enforce.py crashed on the object form of gate_verdict (the schema-preferred shape); because hook failures are fail-open, object verdicts were never gate-enforced on any client. Surfaced by the codex-prompts port's live E2E.
  • The state database is now closed on shutdown, and its write-ahead log checkpointed. Nothing ever called SqliteEngine.shutdown(), so the WAL was never checkpointed and grew across every restart — measured at 4.2 MB against a 598 KB database, truncated to 0 by a clean shutdown. The close runs last, after every subsystem that may still write on its way down.
  • The execution ledger grew without bound. execution_records had no DELETE anywhere and declared its retention as "unbounded-justified" with a rationale reading PLACEHOLDER, while state.db is shared across every project on the machine. Row caps are now declared per table and enforced at startup, and the resource-change log trims through the same shared implementation instead of its own inlined DELETE against a config value that could disagree with the declared cap.
  • The tenants table is gone (schema v19). It held one seeded row, had no reader outside tests that inserted into it to prove it existed, and nothing referenced it — tenant_id elsewhere is a plain column, never a foreign key.
  • The cpm CLI could leave the MCP server unable to start. Version-history commands reached state.db through an embedded Python sqlite3 helper carrying its own CREATE TABLE, whose shape predated the workspace-isolation columns. Running the CLI before the server's first start created version_history without those columns, and the server then failed to boot with no such column: workspace_id. The CLI now uses node:sqlite directly, resolves the same workspace scope the server does — they previously wrote history under different tenants and could not see each other's versions — and no longer creates any schema.
  • Database initialization failures now fail startup instead of degrading silently. A configured database that failed to open was logged at warn and swallowed at three startup wiring sites, so the server reported a clean start while running with no audit trail, no argument history, and an inert version-rollback feature. A failed resource-index resync during hot-reload likewise no longer reports "completed successfully".
  • Codex plugin runtime: plugin launch no longer depends on Claude root interpolation, and mutable SQLite/log output can be routed to a sandbox-writable runtime root without moving bundled resources.
  • ci: make plan retirement self-contained and record why it runs on the PR (cbdfeae)
  • ci: point downstream sync PR bodies at the renamed upstream repo (410acb7)
  • ci: re-add formatted staged files with -f in pre-commit (59dc266)
  • config: stop gitignoring the project rules the comment says to track (7dc9b15)
  • deps: close the Dependabot set — override tmp to 0.2.x, plan Tier 4 triage (8381c0a)
  • gates: correct the workflow-preflight source, not its compiled output (163a58a)
  • hooks: enforce the structured gate_verdict shape gate-enforce claims to check (a5d1b60)
  • prompts: drop the undocumented gates alias on prompt update (0e7f857)
  • runtime: scope every state.db writer, then delete the backfill migration (378b0bf)
  • scripts: close the root package.json version drift channel (b753038)
  • scripts: read script flags as ground truth, not just the two parser tables (6ebc998)
  • server: bound the execution ledger and drop the dead tenants table (821e2af)
  • server: close the database on shutdown and fail loudly on init failure (fae1f55)
  • server: stop the CLI creating state.db schema, which blocked server startup (2d83827)

Documentation

  • docs: add plan-board frontmatter to the pipeline follow-up plan (453dfe1)
  • docs: add the G4 CI run log to the implementation notes (2e2c9da)
  • docs: add the implementation notes both plans should have had (bdadea3)
  • docs: bring Tier 2b statuses current — pushes done, main merge is the sole gate (9fc2a2f)
  • docs: close out the sidecar retirement plan and carry its open findings (a59d58c)
  • docs: close the implementation_plan prompt defect, and correct my own report of it (ba975e5)
  • docs: commit the plan-frontmatter rollout and apply the done/reference test (ba366cd)
  • docs: correct F4's delivery model — it targeted repos with no plans (a3cdc88)
  • docs: drop legacy smithery.yaml — Smithery now takes the MCPB release artifact (e223088)
  • docs: file Tier F5 — the MCP surface verifier runs in no workflow (06ed8c3)
  • docs: file Tiers 15-16 for the work Tiers 10 and 12 deferred (251aa67)
  • docs: finalize the SQLite remediation plan against measured outcomes (8bb5555)
  • docs: format the plan my frontmatter rollout left unformatted (5dbf017)
  • docs: log G2 execution deviations in the implementation notes (9059d07)
  • docs: log the tool-schema snapshot recapture in the implementation notes (a2db54c)
  • docs: make the retirement script publishable and file the federation tier (f6de2ec)
  • docs: mark F9 and F11 resolved where a reader actually looks (50954b1)
  • docs: mark tier completion where it is scannable, and correct F14 twice (a8f1ba3)
  • docs: rebrand to Wolfflow — rename repo references, README identity, plan records (9d9eeb4)
  • docs: reclaim the -mcp repo suffix; prepare registry integration files (8506b76)
  • docs: reconcile the SSE references left behind by the transport removal (ffcdc95)
  • docs: record the codex port -- alignment rule, changelog, plan + notes (75960b3)
  • docs: record the Tier 8 stage domain-ownership review and scope Tiers 11-14 (bb9fdb6)
  • docs: record Tier F5 execution — three plan premises corrected (1df409a)
  • docs: record where the validation-mechanism work landed, and why it is three commits (1bbc304)
  • docs: revert Wolfflow branding to Claude Prompts; align README with MCP-ecosystem conventions (848f7db)
  • docs: scope the Python hook contract to the durable surface (774252f)
  • docs: strip trailing whitespace that fails the PR-range hygiene check (e0d3255)
  • mcp-tools: use the framework vocabulary in the gate-veto comment (9133654)
  • scripts: cite the plan convention at a path every consumer can reach (06ef228)

⚠ BREAKING CHANGES

  • chains: schema v20 renames chain_sessions.tenant_id and chain_run_registry.tenant_id to run_owner_pid, and drops lifecycle from v_execution_status. Both tables are derived/ephemeral and are dropped by the bump, so no data migrates.
  • runtime: --transport=sse and transport: "sse" in config.json are rejected at startup rather than silently resolved to another transport. Use streamable-http.
  • runtime: The deprecated HTTP+SSE transport is removed; use --transport=streamable-http. The Streamable HTTP transport no longer issues or requires an Mcp-Session-Id header.

Maintenance

  • server: pin the next release to 3.2.0 (e709a1c)

3.1.1 (2026-08-03)

Fixed

  • deps: defer CLI TypeScript 6 migration (#193) (aef8e5e)
  • deps: defer TypeScript 7 migration (#190) (04a9931)
  • deps: update server runtime dependencies to ^0.221.0 (#184) (b848ae6)

3.1.0 (2026-08-03)

Added

  • frameworks: make the default framework config-declarable per project (8b948fb)
  • frameworks: scope framework state per project (905c926)

Changed

  • Dependency delivery contract: Renovate now preserves semantic release types, validates extraction, uses the committed MCPB resolution path, and limits future automerge to observed low-risk development updates.
  • Supply-chain controls: GitHub Actions use immutable full commit SHAs with readable release comments, backed by a repository validator.
  • Runtime support: The server and desktop extension require Node.js >=22.13.0; server CI covers 22.13.0 and 24, the standalone CPM CLI remains >=18.18.0, and local/publish tooling uses Node 24.
  • MCP SDK v2 and protocol revision 2026-07-28: Migrated to the scoped @modelcontextprotocol/* v2 packages. One build serves both protocol eras — a 2026-07-28 client (no initialize handshake, per-request _meta envelope) and a 2025-era client are answered over both STDIO and Streamable HTTP.
  • Stateless HTTP: Protocol sessions are gone. A fresh server instance is built per HTTP request; no Mcp-Session-Id is minted and requests carrying a stale one are served normally. Chain state is unaffected — it was always keyed by this project's own run handles (chain_id), not by protocol sessions.
  • prompt_engine parameter surface is derived from runtime state: gates, gate_verdict, and gate_action are advertised only while the gate system is enabled, since the runtime ignores gate input from every source when it is off. The declared contract is the union of all reachable shapes, so narrowing within it is not a breaking change.
  • Structured gate verdicts: gate_verdict now accepts {overall, rationale, per_gate[]} in addition to the "GATE_REVIEW: PASS - reason" string. The object is schema-validated, so it cannot be submitted malformed; the string form is read back by regex and can fail to parse. Rationales are single-line. The string branch is retained for existing clients and is scheduled for removal.

Removed

  • The deprecated HTTP+SSE transport. SDK v2 no longer ships SSEServerTransport, so keeping it would have meant hand-maintaining a transport upstream had deleted. --transport=sse now exits with an error naming streamable-http rather than falling back to the configured default — the previous fallback started the server on a transport nobody asked for and reported success. The same check applies to transport in config.json. Streamable HTTP still uses text/event-stream framing for responses; only the separate transport is gone.
  • The protocol session registry, together with the session-attachment failure path it required.
  • ci: route validation by change impact (#183) (c7509c2)
  • frameworks: route fallback defaults through DEFAULT_FRAMEWORK_ID (b41adc4)
  • mcp-tools: drop dead wiring from the tool constructor seams (6642c04)
  • pipeline: construct the pipeline from an ordered stage array (094baec)
  • pipeline: delete DependencyInjectionStage and the metadata bag (af8401a)
  • pipeline: drain the execution context metadata bag to one key (b29dff2)
  • pipeline: renumber the 22 stage files to execution order (467ee5a)
  • server: land finalized pipeline and framework remediation (67e905e)
  • server: type McpToolRouter's mcpServer as McpServer (2ddd763)
  • server: type TransportRouter's mcpServer as McpServer (4feaab2)

Fixed

  • ci: allow Renovate validator to inspect updates (#179) (927a816)
  • deps: align Renovate with delivery contracts (#177) (6ac5e87)
  • deps: enforce Renovate release-age gate (#187) (c091bbf)
  • gates: declare the gate surface on the hook and notification ports (d4a5360)
  • pipeline: derive skipped stages instead of accumulating them (cd7abc0)

Documentation

  • deps: close Phase 6 Renovate rollout (#180) (a785167)
  • deps: scope the SDK v2 package swap and record Tier B's blockers (59dfdee)
  • docs: record acquisition recovery baseline (#182) (8bfd41b)
  • pipeline: add coordinator decomposition tier (#181) (41cbbb9)
  • pipeline: drop a doubled stage name left by the renumber sweep (bd8095a)

3.0.2 (2026-08-02)

Changed

  • deps: the published MCP inputSchema changed in 39 places, all of them permissive. @modelcontextprotocol/sdk selects its JSON Schema converter from the installed zod major (zod-json-schema-compat.js:19-28), so upgrading to zod 4 swapped the engine that produces the tool surface. The principal difference is that additionalProperties: false is now emitted as additionalProperties: {}. No consumer action is required: every request that validated under zod 3 still validates under zod 4 — the surface changed shape without narrowing what it accepts, which is why this ships as a patch rather than the major Release Please computed. The surface is now pinned by server/tests/snapshots/mcp-input-schemas.json and checked in CI, so a future converter change cannot land unnoticed.

Fixed

  • scripts: check gemini's dependency range, not its own version (#170) (adee76c)

Maintenance

  • deps: dependency modernization — Tiers A–D (zod 4, js-yaml 5, TypeScript 6, ESLint 10) (#172) (a28119c)
  • release 3.0.2 rather than the computed 4.0.0 (#173) (550b2e4)

3.0.1 (2026-08-01)

Fixed

  • ci: ship agents/ in the plugin distribution and assert it (#160) (1341e08)

Changed

  • server: migrate cross-layer imports to package.json subpath imports (901081a)
  • server: subpath imports + declared public API contract (b05a181)

Documentation

  • declare the public API contract that major versions protect (02f937f)

3.0.0 (2026-08-01)

Added

  • cpm CLI now ships with the npm package: the workspace CLI is published as a second bin of claude-prompts, so it runs from any directory without cloning the repo or installing an MCP server — npx -p claude-prompts cpm validate --all -w ./my-workspace. Useful for scripting, CI, and for agents working outside a configured MCP client. The bundle is self-contained (no runtime dependencies) and is built from cli/src by server/esbuild.config.mjs, which imports cli/esbuild.config.mjs rather than duplicating it so the standalone and published bundles cannot drift. See CLI Guide.
  • CLI validated in CI: a CLI job now runs the CLI's typecheck, build, and integration suite on every run. jest/ts-jest were missing from cli's devDependencies, so its 75 integration tests had never executed; six were failing against fixtures left stale by the content_checkinline_guidance and methodology → framework retirements. Fixtures corrected, suite green.
  • Warnings for dropped inline gate definitions: normalizeInlineGateDefinitions previously discarded malformed definitions in silence. Each drop now logs the prompt, the gate (by ID, else name, else position), and every field that disqualified it — all of them, not just the first, so one load cycle reports every mistake. Applies to YAML and markdown prompts. Malformed definitions are still dropped rather than failing the load, so a bad block costs one gate instead of the whole prompt. This is release N of the warn-then-arm migration described under Deprecated.
  • Prompt-level injection control: a prompt may declare an injection block in its prompt.yaml (system-prompt, gate-guidance, style-guidance, each accepting enabled, frequency, target). It resolves between step and chain config, taking the hierarchy to eight levels. Setting system-prompt.enabled: false also withholds gates that score methodology adherence, since scoring a methodology that was never injected is incoherent. See Injection Control.
  • session:cancel action on system_control (Tier 3): MCP clients can now cancel an active chain session via system_control(action:"session", operation:"cancel", session_id:"chain-X#1"). Transitions runStatus to cancelled; idempotent on already-cancelled sessions; refuses sessions in terminal completed/failed state. Use operation:"cancel" for soft-stop (preserves session for audit), operation:"clear" for hard removal (deletes session and chain history).
  • ExecutionRecord persistence (Tier 5): Pipeline stages 9 and 10 now emit append-only ledger rows to the execution_records table on every chain-step transition. Stage 9 emits a working record per render (with substate.renderedAt); stage 10 emits a completed record on chain terminal. Records carry SEP-1686-aligned StepLifecycle + StepSubstate + GateVerdictSummary shape. ULIDs (monotonic) preserve insertion order across rapid emissions. Emission is best-effort — failures log a warning and never break pipeline execution.
  • command-tokenizer.ts: Pure function tokenizeCommand() with quote-aware detection for all 8 operator types (chain, delegation, gate, parallel, repetition, conditional, framework, style). Includes delimiter overlap filtering to prevent ==> from false-matching as gate operator
  • command-tokenizer.test.ts: 56 tests covering all operator types, quoted argument regression suite, mixed operators, prompt ID extraction, cleaned command generation, and edge cases
  • execution: execution ledger Tiers 1-5 + Phase 4 SQLite cleanup (#131) (9fd4520)
  • gates: add script_tool verification criteria and fix schema normalization (d12c278)
  • gates: clarify gate vocabulary, add path-verification gate, documentation pass (#132) (7d46db0)
  • gates: gate resolution precedence (ADR 0001), injection hierarchy, launcher envelope (a06287d)
  • scripts: add verify:mcp to check a build without restarting Claude Code (dda4cd6)
  • scripts: assert content in verify:mcp and gate its own falsifiability (8c79454)
  • server: ship the cpm CLI as a second bin (f9d9ec2)
  • server: unify contract-surface vocabulary on framework, add recurrence guard (6b5b27a)

Changed

  • Downstream marketplace sync no longer hardcodes the license: the sync-downstream job stamped .license = "AGPL-3.0-only" onto minipuft-plugins' marketplace.json as a literal, so it would have re-applied the pre-2.1.0 license on every release and silently reverted the MIT change above. The license is now read from .claude-plugin/plugin.json (one source of truth) and asserted in the job's validate step.
  • Repository housekeeping: removed .actrc (no workflow, script, or doc referenced it) and .nvmrc (no machine consumer; .node-version is the pinned file and is read by setup-node and the extension build). Publish workflows now resolve Node via node-version-file: '.node-version' instead of five hardcoded 24 literals. The remotion/ product-demo tree moved out of the repository into a standalone local project, ending its dependency-bot churn; its commitlint scope was retired with it.
  • Single active Renovate configuration: the repo carried both a bare root renovate.json and a tuned .github/renovate.json5. Renovate resolves the root file first, so the tuned config — including the zod <4 and express <5 holds — had never taken effect. Confirmed by a --dry-run=full against main, which reported it would ensure a dashboard titled Dependency Dashboard (the default) rather than the 📦 Dependency Updates Dashboard the json5 specifies. The root file is removed. Because the surviving config had never executed, it was audited before activation rather than trusted:
    • Dropped baseBranches: ["main", "develop"]["main"]; no develop branch exists on the remote.
    • Dropped postUpgradeTasks; it requires self-hosted Renovate with allowedPostUpgradeCommands and is inert on the hosted app.
    • Dropped the enabledManagers: ["npm"] allowlist entirely. A dry-run comparison showed activating it as written would have silently stopped updates for the dockerfile manager (server/src/Dockerfile base images) and nodenv (.node-version — the file every workflow now resolves Node from). Auto-detection is what had actually been running.
    • Set vulnerabilityAlerts.minimumReleaseAge: null, overriding the global 3-day soak. With Dependabot security updates disabled, Renovate is the sole remediation path and CVE fixes must not wait three days. Dependabot alerts remain enabled — Renovate reads that feed to detect vulnerabilities and would go blind without it.
    • Automerge ships off pending one review cycle now that the config is live for the first time.
  • Re-licensed from AGPL-3.0-only to MIT to match the MCP ecosystem default and unblock corporate adoption. This reverses the 2.0.0 change that moved the project from MIT to AGPL-3.0-only. Network use of modified versions no longer triggers the source-disclosure obligation of AGPL Section 13; the MIT terms impose only attribution. LICENSE, server/package.json, manifest.json, and .claude-plugin/plugin.json now all declare MIT, as does the default license field stamped on skills exported by skills:export — regenerate exported skills to pick up the new value. Production dependencies were audited before the change: 109 MIT, 33 Apache-2.0, 14 BSD-3-Clause, 12 ISC, 2 BSD-2-Clause, 1 Python-2.0, and zero copyleft.
  • %lean no longer keeps methodology-scoring gates: %lean suppresses the methodology system prompt, so the gates that score adherence to it are now withheld too — today that is framework-compliance alone. Non-framework gates continue to run under %lean exactly as documented; the correction is narrower than the previous wording suggested. Same applies to %clean and to a prompt-level system-prompt opt-out. %judge forces the methodology in and therefore keeps the gates.
  • framework_gates: false now takes effect: the prompt-level opt-out was read from a field that had five readers and no writer, so it did nothing. It now withholds methodology gates across every tier, including registry-activated ones. A prompt already setting it will see those gates disappear — which is what the option has always promised.
  • gateConfiguration.exclude now applies to registry-activated gates: excludes were honoured during planning and then silently undone when the same gates were re-added by category activation. One veto set now covers every tier.
  • db_reader.py migrated to v_execution_status SSOT view (Tier 4): Python hook now reads chain state from the cross-language SSOT view introduced in Tier 1, using the canonical run_status column (Tier 2) for boundary detection. Falls back to chain_sessions per-row table, then chain_run_registry blob, for backward compatibility during rollout (Tier 10 will retire the blob fallback). Hook output shape unchanged — existing chain-stop integration is preserved.
  • Consolidated four KV-blob tables into shared kv_state (SCHEMA_VERSION 15 → 16): framework_state, gate_system_state, argument_history, and resource_hash_cache are now rows in a single kv_state table keyed on (tenant_id, key). SqliteStateStoreConfig gains an optional discriminator key for shared tables. state.db is ephemeral, so the schema bump auto-recreates on next server start with no migration burden. Drops 4 tables and 5 indexes.
  • Atomic dual-write to chain registry + hook view: persistSessions() now wraps the chain_run_registry blob write and the derived chain_sessions projection inside a single transaction so the two can never diverge. Renamed syncToSessionTableprojectToHookView to reflect that chain_sessions is a read-only projection of the registry blob.
  • SqliteChainRunRegistry class removed: dead code with zero consumers. Single DirectChainRunRegistry implementation remains.
  • Command tokenizer refactor: Replaced duplicated operator detection across 3 parsing strategies with a single-pass, quote-aware tokenizeCommand() function
    • command-parser.ts: 771→710 lines; symbolic canHandle reduced from 20 lines to 1; gate/framework/style stripping regex (~25 lines) replaced by tokens.promptId/tokens.rawArgs
    • parser-utils.ts: 198→156 lines; removed hasOperatorOutsideQuotes and stripFrameworkOperatorOutsideQuotes (zero consumers — tokenizer subsumes)
    • Strategies now consume TokenizedCommand instead of re-detecting operators: canHandle(command, tokens) reads tokens.format and tokens.hasSymbolicOperators
    • Eliminates the class of bugs where special characters inside quoted arguments (e.g., "R3F + Visx", "modes: (1)") triggered false operator detection
  • chains: rename ChainSessionManager identifiers to ChainSessionStore (6f9428a)
  • chains: retire StepState enum for StepLifecycle + StepMilestone (d617330)
  • config: separate authored framework settings from the resolved view (0bc61f8)
  • execution: extract shared process utility with POSIX signal interpretation (465bf53)
  • frameworks: dedup and disambiguate colliding framework types (0b9d8c2)
  • frameworks: delete the enableArgumentSuggestions flag (4738763)
  • frameworks: move methodology-named files and directories (12d2470)
  • frameworks: remove the deprecated methodology field from definitions (bb1f590)
  • frameworks: rename internal methodology identifiers to framework (4c49340)
  • frameworks: rename methodology to framework in comment prose (ffd1033)
  • frameworks: rename the 16 exported Methodology* symbols (7d16376)
  • frameworks: retire FrameworkDefinition.methodology (a5ef404)
  • frameworks: unify methodology vocabulary on framework (0393797)
  • gates: rename gate source methodology to framework-guide (4c83c66)
  • mcp-tools: delete the system_control tool-description sink (0ad5769)
  • mcp-tools: rename resource_type value methodology to framework (916b61c)
  • parsers: centralize operator detection in single-pass command tokenizer (1dab41b)
  • prompts: rename create_methodology to create_framework (7d1c32e)
  • remotion: rename methodology to framework in the tutorial video (5808785)
  • resources: consolidate write paths, remove dead JSON format (4e8bdf6)
  • resources: rename methodologies resource dir to frameworks (98b1fd9)
  • server: delete dead barrels and compat aliases (837d847)
  • server: name the script-tool filter for triggers, not the retired mode field (3ef5411)

Deprecated

  • inline_gate_definitions will begin executing in the next release — behavior change, action may be required. A prompt's gateConfiguration.inline_gate_definitions block has never executed: every consumer to date was display or analysis. Per ADR 0001 (d), the next release registers these definitions and schedules them as real gates, controlled by gates.executeInlineGateDefinitions (default false in this release, true in the next).
    • Why you may care: a prompt in your workspace that declares inline definitions — possibly written before they were inert, or copied from the create_prompt scaffold — will start enforcing them. The bundled corpus is unaffected (no bundled prompt configures gates this way), but workspaces overlaid via MCP_WORKSPACE cannot be inventoried from here.
    • What to do this release: watch the server log for Dropped inline gate definition warnings (new below) and check any prompt named there. Set gates.executeInlineGateDefinitions: true to opt in early and verify behavior before the default flips.
    • When armed, definitions resolve at rank 60 (prompt-config) — below a caller-supplied gate, removable by a prompt-level exclude — and a definition whose ID matches a registered gate overrides that gate's body field by field, with arrays and objects replacing wholesale rather than merging.

Fixed

  • ci: keep the Docker build working now that server/ builds the cpm bin (1bb6f6e)
  • ci: make CI enforce what the repo already checks, and stop sync-downstream shipping broken lockfiles (708c81b)
  • ci: make sync-downstream regenerate lockfiles and assert npm ci (dbba335)
  • ci: make the new CI jobs work in a clean runner environment (809089b)
  • ci: stop prettier reformatting the generated gate index (499c04e)
  • ci: stop validate:format failing on tool-generated files (#159) (ef3d39c)
  • config: sync config.json and its schema to the framework rename (39db875)
  • contracts: correct two tool descriptions that named an invalid value (436e2d5)
  • docs: repair nested code fences in the first-prompt tutorial (ffef5d7)
  • frameworks: reconnect frameworkGates — the YAML rename orphaned it (280603e)
  • frameworks: repair five methodology-vocabulary defects; finish the rename (8a547d9)
  • frameworks: unstick @deprecated from version, lay out tier 4.3 (9d8cbe2)
  • hooks: filter deleted files from pre-push prettier check (5ee1fb2)
  • hooks: make every local gate a strict subset of CI (3924713)
  • hooks: remove stale hooks-state.db fallback from ralph-stop (2be57ab)
  • hooks: use --diff-filter=ACMR instead of shell workaround (edb9526)
  • mcp-tools: rename the methodology creation param to framework (e2b632c)
  • parsers: quote-aware operator detection prevents special chars in args from breaking prompt resolution (0beb3ff)
  • repoint the cpm CLI at resources/frameworks — Stage 3a broke it (19f9d71)
  • scripts: make the action-metadata guard able to fail again (95fa1cb)
  • server: fail fast instead of hanging when an SSE session cannot attach (dc83489)
  • server: preserve resource ids containing a slash when detecting removals (126a037)
  • server: set rootDir so the published types entry resolves (741a384)
  • server: survive EPIPE when a shell_verify child ignores stdin (5bb0d05)

Documentation

  • add F5b — hooks diverge from the repo's own hook standard (bf93ca7)
  • add the CI enforcement and import-alias plan (6022bb0)
  • add Tier 5 (contract surface + guard) and Tier 6 (dead options) (5d74253)
  • audit the 62 compat sites and classify each by verdict (c0dc894)
  • close out sweep stage 3 and record its deliberate exclusions (2693bfc)
  • close plan row 3.9 — the guard now proves it complete (a16d021)
  • close the shim-debt sweep with Tier V, E2E and ORD outcomes (0503463)
  • correct the doc instructions that no longer work (62897a0)
  • correct the plan's own counts after tiers 1-3 (4f9bc66)
  • correct version-storage reference, record shim-debt sweep (94fa37d)
  • drop dead CLI flags and env vars from server README; fix barrel rule (d25b323)
  • finish removing the path-override surface that does not exist (2a3084b)
  • make the docs-vs-parser gap a CI failure instead of a recurring bug (0e76c03)
  • narrow F1b — path filters apply to the PR diff, not the push (db5eb40)
  • open Tier E2E and Tier V for the two findings this sweep created (90bf97c)
  • prompts: correct the allowedValues deprecation notices (ae6da7f)
  • reconcile stale tier status prose against the row marks (3315b05)
  • reconcile Tier 3 and Tier 5 plan rows against measurement (1497b4f)
  • reconcile two stale plan rows against what actually happened (f452463)
  • record Stage 4 outcome — three live regressions, guard blocked (b8a8b17)
  • record sweep tiers 3.1-3.9 and the StepState migration (8f3731e)
  • record that Tier 1 is stacked on the shim branch, not cut from main (2471d28)
  • record the bb1f590a follow-up outcome (ef4aa75)
  • record the tier 4.3 outcome and the fourth falsified verdict (41c84e0)

⚠ BREAKING CHANGES

  • server: the project is re-licensed from AGPL-3.0-only to MIT. Network use of modified versions no longer triggers the source-disclosure obligation of AGPL section 13; MIT imposes attribution only. Skills already exported by skills:export carry the old AGPL-3.0-only license field and must be regenerated to pick up MIT.
  • mcp-tools: resource_manager parameter methodology is now framework; FrameworkCreationData.methodology removed and type is now required.
  • frameworks: FrameworkDefinition.methodology removed; use type.
  • resource://methodology/ is now resource://framework/.
  • prompts: >>create_methodology is now >>create_framework.
  • config: the config.json section methodologies is now frameworks. Existing files are migrated in place on load; the legacy key is ignored after that and can be deleted.
  • frameworks: a framework.yaml with only methodology: and no type: no longer loads. All bundled definitions already declared both, so nothing shipped requires an edit; a hand-authored workspace definition may.
  • mcp-tools: resource_manager(resource_type: "methodology") is now resource_type: "framework". Existing version history for frameworks is discarded by the schema recreate rather than migrated; this is accepted for a pre-release project. The 'switch' action remains valid only for this type, now under its new name.
  • resources: workspace overlays under MCP_WORKSPACE/resources/methodologies/ will no longer resolve and must be renamed to resources/frameworks/ with their methodology.yaml renamed to framework.yaml. This fails silently - the resource simply stops being found - rather than raising an error. No overlay was present in this environment at the time of the rename.
  • chains: SCHEMA_VERSION 15 -> 16. Persisted step state values rendered and response_captured no longer exist and substate_json changed shape, so the first server start after this drops and recreates state.db. Any in-flight chain session is lost; run it between chains rather than mid-run.

Maintenance

  • server: re-license from AGPL-3.0-only to MIT (07f2f0a)

2.1.0 (2026-03-19)

Added

  • Multi-source resource overlay: Custom workspace resources now load alongside bundled ones for all resource types (prompts, gates, methodologies, styles). Set MCP_WORKSPACE to a directory with resources/ subdirs — custom resources with the same ID as bundled ones take priority
    • Methodologies: additionalMethodologiesDirs in RuntimeMethodologyLoader (mirrors gates pattern)
    • Styles: additionalStylesDirs in StyleDefinitionLoader (mirrors gates pattern)
    • Prompts: Overlay merge in data-loader.ts — loads primary then overlays per workspace dir
    • Gates: Already supported (unchanged)
  • Wide-event root span enrichment: Pipeline root span (prompt_engine.request) now contains 22 business-context attributes at completion, following the wide-event pattern
    • Performance: stages.slowest, slowest_ms, executed_count, duration.total_ms, had_early_exit
    • Gates: gates.names, passed_count, failed_count, blocked, retry_exhausted, enforcement_mode
    • Chain: chain.is_chain, chain.step_index, chain.id
    • Framework/scope: framework.id, framework.enabled, scope.source
    • Error: error.type for groupable incident triage
    • Enables incident queries like "show blocked requests by gate name" or "which stage is the bottleneck"
  • Response Format Overlays: Methodologies and styles can define responseFormat in YAML to guide LLM response structure at the tool description level
    • Methodology responseFormat woven into tool descriptions at synchronization time (global)
    • Style responseFormat available for per-execution system prompt injection
  • ci: auto-merge manual changelog entries into Release Please releases (d2f2f52)
  • runtime: multi-source resource overlay and path consolidation (2f5d751)
  • server: add OpenTelemetry instrumentation and observability infrastructure (48e720f)

Changed

  • BREAKING: Path resolution consolidated to MCP_WORKSPACE as single source of truth. Individual per-resource env vars (MCP_PROMPTS_PATH, MCP_METHODOLOGIES_PATH, MCP_GATES_PATH, MCP_STYLES_PATH, MCP_SCRIPTS_PATH) and CLI flags (--prompts, --methodologies, --gates, --scripts, --styles) removed
    • Migration: Use MCP_WORKSPACE with standard resources/ subdirectory structure, or MCP_RESOURCES_PATH for custom resources base
    • PathResolver get*Path() methods unified via shared resolveResourceSubdir() helper
    • Per-loader resolve*Dir() methods simplified to package.json + __dirname fallback only (env var handling removed)
    • module-initializer.ts unconditionally initializes singletons with PathResolver-resolved dirs
  • Prompt management consolidation: Migrated all prompt lifecycle operations from standalone prompt_manager tool to unified resource_manager with resource_type:"prompt". This completes the tool consolidation started in v1.2.0.
    • All 12 prompt actions preserved: create, update, delete, list, inspect, reload, analyze_type, analyze_gates, guide, history, rollback, compare
    • Internal architecture improved with service decomposition: PromptLifecycleService, PromptDiscoveryService, PromptVersioningService
    • No API changes required—use resource_manager(resource_type:"prompt", action:"...") as before
  • Client launch preset expansion: Extended --client startup presets to include gemini, opencode, and cursor (in addition to claude-code, codex, unknown) and wired delegation strategy routing for each profile.
  • Delegation strategy hardening: Centralized delegation profile metadata for CTA/footer rendering, added Codex fallback guidance when spawn_agent is unavailable, and marked Cursor delegation messaging as experimental/testing.
  • Tier 5 File Size Decomposition: Three oversized files decomposed to meet 500-line service advisory
    • loader.ts (896→544): Extracted markdown parsing to markdown-prompt-parser.ts; consolidated ~30 verbose info-level logs
    • tool-description-loader.ts (741→489): Extracted methodology/style overlay resolution to tool-description-overlays.ts
    • file-operations.ts (517→345): Removed 3 dead diagnostic methods with zero consumers
  • MCP Tool Schemas: Hand-written Zod schema factories replace codegen mcp-schemas.ts, enabling methodology-aware description overlays without generated code
  • Operator Patterns: Loaded from JSON registry at import time via esbuild inlining, eliminating the generate-operators codegen step and Python hook codegen
  • Style Guidance: Served exclusively from YAML definitions via StyleManager, removing hardcoded legacy fallback
  • hooks: improve Python hook type safety and reduce pyrefly baseline (69cc281)
  • runtime: replace ServerRootDetector with resolvePackageRoot() (3c2bd7f)
  • server: decompose Tier 5 oversized files to meet size advisories (adbc670)
  • server: enforce architecture boundaries via DatabasePort injection (5b39be0)
  • server: replace codegen with hand-written schemas and resource-driven overlays (84b74cf)

Removed

  • Legacy prompt_manager MCP tool: Prompt lifecycle now exclusively via resource_manager. The standalone prompt_manager tool registration has been removed.

Fixed

  • Prompt update field clearing: Sending empty strings (e.g., system_message:"") now correctly clears the field instead of silently preserving the old value. Update handler migrated from || fallback to !== undefined pattern matching the methodology handler
  • ci: add checkout step before changelog merge in Release Please workflow (d68d0f1)
  • ci: centralize downstream version sync in extension-publish (e8c25e0)
  • ci: fix changelog merge target and set release-as 2.1.0 (cc2ed76)
  • deps: update dependency chokidar to v5 (b10476f)
  • hooks: register delegation-enforce.py in PreToolUse hooks (0c7c3a4)
  • hooks: resolve generated operators Ruff typing issue (a956fb2)
  • hooks: use SSOT registry for operator detection in prompt-suggest hook (2fe7a4f)
  • hot-reload: support chokidar 5 upgrade (1db39c8)
  • mcp-tools: fix prompt update field clearing and simplify update workflow (5a2800e)
  • mcp-tools: remove section/section_content from router pass-through (61072df)
  • parsers: strip leading delegation operators before argument extraction (07ed2ee)
  • scripts: check dependency range instead of package version for opencode (3f3fa9e)
  • scripts: generate Ruff-compatible Python operator types (aa201d7)
  • scripts: update extension deps list and lint ratchet baseline (bffac0d)

Improved

  • Prompt update workflow for LLMs: Update fields directly — update(id, description:"new") — only provided fields change, omitted fields are preserved. Tool description now includes a compact UPDATE hint for discoverability
  • Update handler maintainability: Replaced 8 individual if-checks with UPDATE_FIELDS map loop for field-level overrides. Adding new updatable fields is now a single map entry

Documentation

  • README install sections: OpenCode and Gemini CLI sections restructured with Option A/B (plugin vs manual config), correct config formats (OpenCode uses mcp key with command array), and Gemini hooks prerequisite added. Fixed > [!NOTE] callouts not rendering inside <details> blocks
  • Custom Resources section: Documented MCP_WORKSPACE overlay behavior, removed false ~/.local/share/claude-prompts/ persistence claim, added per-client config examples with MCP_RESOURCES_PATH, added --init workspace creation workflow
  • Telemetry observability guide: Restructured attribute reference into Initial/Wide-Event/Other sections with incident query examples per attribute. Fixed chain events incorrectly documented as active (now marked Planned). Updated architecture diagram to show wide-event enrichment flow.
  • CONTRIBUTING.md modernization: Restructured contributor guide with quick-start path, contribution type routing (code/prompts/gates/methodologies/docs), commit scope reference, testing decision matrix, and progressive disclosure via collapsible sections
  • GitHub issue and PR templates: Added YAML-based issue forms (bug report, feature request) with project-specific dropdowns (transport, MCP tool, area), preflight checkboxes, and structured fields following Next.js/Vite/Claude Code conventions. Minimal PR template complements existing CI pr-summary bot
  • cleanup: record chokidar post-upgrade rationale (b6740e2)
  • modernize CONTRIBUTING.md, add GitHub templates, align project config (3afbe39)
  • record open PR validation wave (81d383a)
  • record package wave results (0e7de90)
  • record remaining package wave (d398fe5)
  • remove orphaned Unreleased section from pre-v2.0.0 changelog (73ad697)
  • standardize inline doc links with TIP callouts across README (ebd6241)
  • update changelog for unreleased changes (25c659e)
  • update demo video plan to WebP format and re-recording schedule (b87aef7)

⚠ BREAKING CHANGES

  • runtime: Individual per-resource env vars and CLI flags removed. Use MCP_WORKSPACE with resources/ subdirectory structure instead.

2.0.0 (2026-03-11)

⚠ BREAKING CHANGES

  • server: License changed from MIT to AGPL-3.0-only. Network use of modified versions now requires source disclosure under Section 13 of the GNU Affero General Public License v3.
  • server: All runtime-state paths require explicit PathResolver configuration. Users running via npx must provide --workspace or set MCP_WORKSPACE. Storage backend migrated from JSON files to SQLite — downstream readers of state files must use SQLite.
  • paths: All path-dependent modules now require explicit path configuration. Callers must provide paths via PathResolver or CLI flags.

Added

  • ci: add commitlint, changelog-sections, and downstream sync workflow (802575d)
  • eslint: add claude-plugin custom ESLint rule (876b431)
  • gates: add response blocking and gate event emission in pipeline (914a074)
  • hooks: add server-side hook registry and MCP notification system (86ba115)
  • parsers: add framework-aware quote parsing for @ operator (9555122)
  • scripts: add skills-sync CLI for cross-client skill distribution (351291c)
  • server: add identity resolution, delegation operator, and methodology assertions (#76) (913c2d9)

Fixed

  • ci: align extension-publish tags with Release Please config (19a0024)
  • hooks: allow generated file deletions for feature removal (a8fcb24)
  • hooks: update Python hooks for new gate server format (1b0ddf5)
  • parsers: simplify argument assignment for unstructured text (061cd0f)
  • pipeline: use provider function for prompt cache synchronization (f092837)
  • runtime: bridge PathResolver to jsonUtils via PROMPTS_PATH env var (3d4505b)
  • tests: set PROMPTS_PATH in test setup for template rendering (34769d7)

Changed

  • gates: consolidate gate verdict validation to single source of truth (0ae1ae9)
  • gates: extract gate-activation utility and cleanup dead code (85bd265)
  • mcp-tools: consolidate prompt_manager into resource_manager (6a41a52)
  • parsers: simplify argument matching and remove dead code (3befb9f)
  • paths: enforce explicit path resolution, remove process.cwd() fallbacks (b93ca78)
  • prompt-guidance: remove unused resource selection code (a2da026)
  • remotion: replace demo compositions with Liquescent design system (b06706b)
  • runtime: migrate CLI argument parsing to node:util parseArgs (71dbe00)
  • server: complete modular monolith migration to 5-layer architecture (31d3884)
  • server: relocate tooling/ submodules and consolidate pipeline imports (5204a7a)
  • types: consolidate context types and add gate response contract (aa51202)

Documentation

  • add LIQUESCENT methodology and update changelog (26a639b)
  • changelog: document breaking path resolution changes (5918e16)
  • ci: update downstream sync comment to reflect Dependabot approach (82e15cd)
  • consolidate documentation and remove completed plans (1e52295)
  • update path configuration and release process documentation (abf3457)

Maintenance

  • ci: downgrade to minor bump — path resolution change is internal only (c550b74)
  • ci: release as 2.0.0 — AGPL license change is breaking (7e5d024)
  • server: migrate license from MIT to AGPL-3.0-only (36961fa)

1.7.0 (2026-01-23)

Features

  • ci: migrate to OIDC trusted publishing for npm (e71d272)
  • config: add registerWithMcp toggle for MCP resources (471ed14)
  • config: expand resources config with granular per-type controls (ddcdba2)
  • docs: add Remotion animation system for documentation videos (0a40c4d)
  • extension dep sync, repetition operator, hook fuzzy matching (efbdc30)
  • hooks: add chain step visibility with IDs for workflow preview (ff25d5e)
  • hooks: improve prompt_engine directive clarity and token efficiency (b62f8d3)
  • hooks: validate operator values against registered server resources (30cba3a)
  • resources: add MCP logs resources for runtime observability (5f0025f)
  • resources: implement MCP Resources protocol for token-efficient access (80d56d2)

Bug Fixes

  • parsers: preserve arguments after * N repetition operator (649bae3)

1.6.0 (2026-01-22)

Features

  • ci: modernize Release Please and npm-publish workflows (7bb1303)

Bug Fixes

  • ci: handle Release Please PR output as JSON (8559c74)
  • tests: update E2E plugin validation for current structure (053b0be)

1.5.0 - 2026-01-21

Added

  • Hook-level fuzzy matching: Unknown prompt interception before tool call for token efficiency
    • >>unknwon_prompt → Hook returns suggestions immediately (no server round-trip)
    • Same multi-factor scoring algorithm as server-side (prefix: +100, word overlap: +30/word, Levenshtein: +50-distance*10)
    • Saves ~50-100 tokens per failed prompt attempt
  • Resource change tracking: Audit log for prompts and gates with source attribution
    • Tracks filesystem hot-reloads, MCP tool operations, and external changes
    • Content hashing detects actual modifications (skips no-op saves)
    • Baseline comparison at startup surfaces changes made while server was down
  • system_control(action:"changes"): Query the audit log with filters (source, resourceType, since, limit)

Changed

  • Error messages: Condensed parsing errors for token efficiency
    • Before: Multi-line verbose messages with format examples and hints
    • After: Single-line messages with fuzzy suggestions only when relevant
  • File watching: Migrate from fs.watch to Chokidar with automatic polling for WSL2/network filesystems
    • Auto-detects WSL2 environments and enables polling mode
    • Configurable via usePolling ('auto' | true | false) and pollingInterval (default: 300ms)
    • Fixes hot-reload not working in WSL2 due to virtualized filesystem limitations

Fixed

  • Resource ID extraction: Baseline comparison now correctly extracts prompt/gate IDs from directory names (was incorrectly extracting "prompt" from nested file paths)
  • Command parsing: Comprehensive improvements to command parsing robustness:
    • Bare prompt names: Accept strategicImplement without requiring >> prefix
    • Double-encoded JSON: Handle nested JSON strings from MCP clients that double-escape payloads
    • JSON-wrapped chains: JSON strategy now properly delegates to symbolic parser for chain commands (e.g., {"command": ">>analyze --> summarize"})
    • Argument syntax: Gate operators (:: and =) no longer conflict with argument assignment (input="value")
  • Fuzzy prompt suggestions: Multi-factor scoring replaces simple Levenshtein-only matching:
    • Prefix matching (score +100): ana → suggests analyze_code, analyze_data
    • Word overlap (score +30/word): code → suggests code_review, analyze_code
    • Typo correction: Dynamic threshold based on query length (longer queries allow more edits)
    • Limited to 3 suggestions: Reduces noise while maintaining relevance
    • No arbitrary examples: Completely unrelated queries show no suggestions instead of random prompts

1.4.5 - 2026-01-20

Added

  • Chain workflow preview: Hooks show all chain steps before execution begins (e.g., "1/4 Initial Scan → 2/4 Deep Dive → ...")
  • scaffold_project chain: Interactive project scaffolding for TypeScript, Python, or hybrid projects with modern tooling
  • Nested chain discovery: Chain steps can reference prompts in subdirectories (e.g., scaffold_analyze under scaffold_project/)
  • System-only prompts: Prompts with only system message (no user template required)
  • Operator patterns generated from single source (TypeScript + Python via generate-operators.ts)

Changed

  • Symbolic parser with unified pattern matching across all operators
  • Hook configuration now loaded from config.json via config_loader.py
  • Move detect-skills.py to global ~/.claude/hooks (not plugin-bundled)

1.4.4 - 2026-01-19

Added

  • Include hooks directory in npm package distribution

1.4.2 - 2026-01-18

Changed

  • Migrate Gemini-specific hooks to gemini-prompts repository

1.4.1 - 2026-01-17

Fixed

  • Remove submodule path checks from distribution validation

1.4.0 - 2026-01-16

Added

  • Global version integrity check across ecosystem (npm, marketplace, extensions)

Changed

  • Migrate documentation guides to Diátaxis framework

1.3.2 (2026-01-14)

Bug Fixes

1.3.1 (2026-01-14)

Bug Fixes

1.3.0 (2026-01-14)

⚠ BREAKING CHANGES

  • Complete MCP server restructure with new consolidated API

Features

  • add Claude Code plugin for /install-plugin support (c3b5654)
  • add dev:claude script for --plugin-dir workflow (2a7d6f8)
  • add marketplace.json for plugin distribution (bf79fcb)
  • add streamable http transport and release automation (0717f31)
  • Add symbolic command language and operator executors (639f86a)
  • dist: separate public and private prompts for distribution (fee7c12)
  • enhance README with interactive prompt management features (13afaa9)
  • enhance server startup options and help documentation (f315f33)
  • gates: implement intelligent gate selection with 5-level precedence system (b8e1c11)
  • gemini: add Gemini CLI extension support (50587c6)
  • gemini: align hooks with Claude plugin infrastructure (c35e4f0)
  • hooks: auto-regenerate contracts on source change (9b21afa)
  • implement enterprise-grade CI/CD pipeline with comprehensive testing framework (#10) (25e7f59)
  • implement Phase 1 - Enhanced Category Parsing System (1506755)
  • multi-platform extension support with enhanced hooks and gate system (27b94ec)
  • parser: enhance case-insensitive prompt matching and add strategic implementation (628b09c)
  • plugin: add server/resources directory for plugin deployment (2d21a86)
  • plugin: add SessionStart hook for dependency installation (3896fb9)
  • plugin: persist user data outside cache directory (e59c64b)
  • plugin: unify plugin with YAML resources, version history, and script tools (0963d4a)
  • ralph: context isolation for long-running verification loops (f1c1014)
  • re-introduce hot-reloading for prompots (720f96b)
  • release 1.2.0 with CI validation and gate refactoring (75ec3e8)
  • shell verification presets and checkpoint resource type (ca24027)
  • styles: add style operator (#) for response formatting (d2c3173)
  • update documentation for version 1.1.0 - "Intelligent Execution" (7e1fb3f)

Bug Fixes

  • add missing nunjucks dependency for template processing (4f78114)
  • add required metadata for plugin menu navigation (72cd845)
  • ci: consolidate workflows and fix Docker paths (42efb12)
  • ci: skip action inventory verification for bundled builds (dd299e5)
  • ci: update extension-publish workflow for bundled distribution (8d977e9)
  • clear lint regressions (77db53a)
  • contracts: add prettier formatting to contract generator (6096c67)
  • contracts: format all generated TypeScript files (0e4c9af)
  • correct marketplace.json schema (source not path) (6d08e63)
  • correct source path (relative to marketplace.json) (e281b48)
  • deps: add missing 'diff' dependency for text-diff-service (12b70db)
  • docker: update Dockerfile for renamed docs and styles directory (35144c8)
  • docs: remove invalid color property from mermaid linkStyle (d086ca1)
  • gemini: align extension with Claude plugin v1.1.1 (fb3413c)
  • gemini: resolve symlinks before path calculation (77da3bc)
  • hooks: add quick-check mode to prevent SessionStart blocking (c4b3f94)
  • hooks: make dev-sync portable across environments (4aa1190)
  • npm: Include methodologies folder in published package (9bad683)
  • plugin: correct .mcp.json schema and improve dev workflow (9927529)
  • plugin: include server/dist for plugin installation (5f1edd3)
  • plugin: remove duplicate hooks reference causing load failure (c6c3ca6)
  • prune useless prompts (daec104)
  • regenerate contract artifacts and update lint baseline (0a0e67d)
  • release: correct release-please config paths (20662ec)
  • Remove accidentally committed node_modules, update .gitignore (ed452ac)
  • return simple text responses for MCP tool visibility in Claude Code (7980567)
  • source must start with ./ (b2482f1)
  • source path relative to repo root (f2e3020)

Miscellaneous Chores

1.2.0 - 2025-01-12

Added

  • CI validation and gate refactoring improvements
  • Release automation in CONTRIBUTING.md

1.1.0 - 2025-01-10

Added

  • Initial public release with MCP server, prompts, gates, and frameworks