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_manageraction:"update"acceptspatch— anchoredold_string/new_stringoperations overuser_message_template,system_message, anddescription— 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: truepreviews the produced text and diff without writing. Both are update-only —createrejects them explicitly. - All five preserved prompt fields are now authorable through the tool.
injection,register_with_mcp,mcp_prompt_mode,subagent_model,agent_typejoinresource_managercreate/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/.gitignorenow 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. Theplanning/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 explicitlyexposes 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_engineaccepts aworkflowparameter — a structured, node-addressed workflow IR, mutually exclusive withcommandandchain_id. It is validated server-side against schema and structural budget caps (maxNodes32,maxFanOut8,maxInsertions3, enforced and narrow-only) and then compiled into an ordinary chain run — the resultingchain_runs/chain_run_nodesrows are structurally identical to an equivalent>>chain's, and there is no IR-specific execution path.edgesare 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-stepvisibility, gate bindings (gates,inlineGateIds), delegation hints (subagentModel,agentType), andinputMapping/outputMapping. A declareddeclaredCostCeilingis recorded on the run's terminal telemetry and never enforced. See Workflow IR Reference.- Chain steps accept a
frameworkfield, selecting the framework for that step alone. It outranks the run-wide default and yields to an explicit^Frameworkoperator 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_changechain, with focused gates for product positioning, information placement, semantic discoverability, and prose hygiene. prompt_engineaccepts an optionalobservationsparameter — chain steps declare typed unknowns (discovered/resolved) that accumulate in a per-run ledger and surface in subsequent step context.execution_recordsnow 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 bysystem_control execution_history. No scoring, weighting, or routing decision is derived from these fields. Schema v21 —execution_recordsisephemeral, 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_nodesgainsorigin/origin_unknown_idprovenance 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: trueis 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 onlyrollbackread 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'sversion_historyrows survive, butrollbackreports "Prompt not found" once the prompt is gone, so those snapshots are unreachable by any action. Scripts calling delete must addconfirm: true. - BREAKING — chain steps reject unknown keys.
chainStepsentries 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 likeframwork: ReACTpreviously parsed to a normal-looking step and ran the chain under the wrong framework with no signal — the same silence left sixinlineGateIdsdeclarations dead across three shipped chains. Every key with a real consumer was declared first, includingdelegation, 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 permanentrenovate/stability-daysblock.
- 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
checkpointresource type is gone.resource_manager(resource_type: "checkpoint", ...)and theclearaction are removed from the tool surface, along with theGitCheckpointmodule 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 publishedresource_typeenum could not succeed. Reinstating it was rejected rather than deferred — the actions weregit stash push/pop/dropwrappers, 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:→ useframeworkGates: - gate YAML
pass_criteria.methodology:→ useframework:; andtype: methodology_compliance→framework_compliance(this one throws at parse, being a closed enum) config.jsongates.methodologyGates→gates.frameworkGates; the top-levelmethodologies:section andresources.methodologiesare no longer adopted into theirframeworksequivalentsresource_managerauthoring payloadmethodology_gates/methodology_elements→framework_gates/framework_elements- prompt-template placeholder
{METHODOLOGY}→{FRAMEWORK_TYPE}Marked breaking because the framework/gate YAML schemas andconfig.jsonare 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 theresource_managerauthoring payload. If you hold a workspace resource written before v3.0.0, rename the keys above before upgrading.
- framework YAML
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
inspectshows; unrecorded prior state is bridged in automatically, rollback validates its target before writing anything, records the restored state as a newRollback to vNrow, and restores snapshots exactly — the oldsnapshot ?? livehybrid 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
argumentsitems on prompt create/update now acceptrequired,defaultValue, andvalidation, andtypeis the loader's 5-value enum — previously Zod stripped them at the first boundary while 45 shipped prompts declaredrequired: true. - Chain step labels retired their stale phase vocabulary. The implementation-planning chain's five
stepNamelabels (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
subagentModelnow marks its step delegated on any chain invocation, not only after a==>operator.OperatorValidationStagereturned early on an empty operator set before delegation normalization ran; the direct (non-symbolic)>>chainpath always has an empty operator set, so a YAML-declaredsubagentModelparsed but produced no delegation CTA or handoff envelope unless the command also spelled==>. Delegation normalization now runs before that exit.agentTypealone still does not mark a step delegated — it only selects which agent a==>-delegated orsubagentModel-marked step uses. - Handoff visibility (and the delegation CTA/envelope it feeds) is now resolved by node identity instead of array position.
resolveHandoffVisibilityindexed the parsed step blueprint bynextStepIndex, 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; awithholddeclared 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 reservedoutputs.<name>namespace ({{outputs.findings}}) instead of a flat template key ({{findings}}), and are removed together with the rest of chain history when a step withholdschain_history— previously a withheld alias still leaked through becausestripChainHistorycould only delete regex-identifiable positional keys.{{findings}}is no longer published; existing authors must migrate to{{outputs.findings}}. No shipped chain declaredoutputMappingat the time of this change. Each key ofoutputMappingstill 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 requiresconfirm: true, and thecheckpointresource type andclearaction are removed from the tool surface.
Maintenance
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_ROOTworkspace resolution, acodex execspawn 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
analysisconfig section is deprecated, and no longer settable from either tool surface. Aconfig.jsoncarrying 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 analysisreportsUnknown subsystem, and bothcpm config setandsystem_control configreject the fiveanalysis.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 theanalysissection to silence the warning. The section itself is removed in the next major. llm_self_checkgate 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%judgeandshell_verify.- Prompt analysis feedback is no longer suppressed by a disabled flag.
resource_managerprompt create/update responses previously printed⚠️ API Analysis Disabledand 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 whenanalysis.semanticAnalysis.llmIntegration.enabledwas true, that flag defaults tofalse, and the only spelling the CLI ever wrote (…llmIntegration.mode) reached no reader. Model-graded gate review is served by judge mode — the%judgemodifier andgates.evaluation.defaultMode— which delegates to the client's own sub-agent and returns throughgate_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.pycrashed on the object form ofgate_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_recordshad noDELETEanywhere and declared its retention as "unbounded-justified" with a rationale readingPLACEHOLDER, whilestate.dbis 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 inlinedDELETEagainst a config value that could disagree with the declared cap. - The
tenantstable 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_idelsewhere is a plain column, never a foreign key. - The
cpmCLI could leave the MCP server unable to start. Version-history commands reachedstate.dbthrough an embedded Python sqlite3 helper carrying its ownCREATE TABLE, whose shape predated the workspace-isolation columns. Running the CLI before the server's first start createdversion_historywithout those columns, and the server then failed to boot withno such column: workspace_id. The CLI now usesnode:sqlitedirectly, 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
warnand 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
lifecyclefrom v_execution_status. Both tables are derived/ephemeral and are dropped by the bump, so no data migrates. - runtime:
--transport=sseandtransport: "sse"in config.json are rejected at startup rather than silently resolved to another transport. Usestreamable-http. - runtime: The deprecated HTTP+SSE transport is removed; use
--transport=streamable-http. The Streamable HTTP transport no longer issues or requires anMcp-Session-Idheader.
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 (noinitializehandshake, per-request_metaenvelope) 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-Idis 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_engineparameter surface is derived from runtime state:gates,gate_verdict, andgate_actionare 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_verdictnow 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=ssenow exits with an error namingstreamable-httprather 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 totransportinconfig.json. Streamable HTTP still usestext/event-streamframing 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
inputSchemachanged in 39 places, all of them permissive.@modelcontextprotocol/sdkselects 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 thatadditionalProperties: falseis now emitted asadditionalProperties: {}. 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 byserver/tests/snapshots/mcp-input-schemas.jsonand checked in CI, so a future converter change cannot land unnoticed.
Fixed
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
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
cpmCLI now ships with the npm package: the workspace CLI is published as a second bin ofclaude-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 fromcli/srcbyserver/esbuild.config.mjs, which importscli/esbuild.config.mjsrather than duplicating it so the standalone and published bundles cannot drift. See CLI Guide.- CLI validated in CI: a
CLIjob now runs the CLI's typecheck, build, and integration suite on every run.jest/ts-jestwere missing fromcli's devDependencies, so its 75 integration tests had never executed; six were failing against fixtures left stale by thecontent_check→inline_guidanceand methodology → framework retirements. Fixtures corrected, suite green. - Warnings for dropped inline gate definitions:
normalizeInlineGateDefinitionspreviously 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
injectionblock in itsprompt.yaml(system-prompt,gate-guidance,style-guidance, each acceptingenabled,frequency,target). It resolves between step and chain config, taking the hierarchy to eight levels. Settingsystem-prompt.enabled: falsealso withholds gates that score methodology adherence, since scoring a methodology that was never injected is incoherent. See Injection Control. session:cancelaction onsystem_control(Tier 3): MCP clients can now cancel an active chain session viasystem_control(action:"session", operation:"cancel", session_id:"chain-X#1"). TransitionsrunStatustocancelled; idempotent on already-cancelled sessions; refuses sessions in terminalcompleted/failedstate. Useoperation:"cancel"for soft-stop (preserves session for audit),operation:"clear"for hard removal (deletes session and chain history).ExecutionRecordpersistence (Tier 5): Pipeline stages 9 and 10 now emit append-only ledger rows to theexecution_recordstable on every chain-step transition. Stage 9 emits aworkingrecord per render (withsubstate.renderedAt); stage 10 emits acompletedrecord on chain terminal. Records carry SEP-1686-alignedStepLifecycle+StepSubstate+GateVerdictSummaryshape. 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 functiontokenizeCommand()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 operatorcommand-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-downstreamjob stamped.license = "AGPL-3.0-only"ontominipuft-plugins'marketplace.jsonas 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-versionis the pinned file and is read bysetup-nodeand the extension build). Publish workflows now resolve Node vianode-version-file: '.node-version'instead of five hardcoded24literals. Theremotion/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.jsonand a tuned.github/renovate.json5. Renovate resolves the root file first, so the tuned config — including thezod <4andexpress <5holds — had never taken effect. Confirmed by a--dry-run=fullagainstmain, which reported it would ensure a dashboard titledDependency Dashboard(the default) rather than the📦 Dependency Updates Dashboardthe 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"]; nodevelopbranch exists on the remote. - Dropped
postUpgradeTasks; it requires self-hosted Renovate withallowedPostUpgradeCommandsand 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 thedockerfilemanager (server/src/Dockerfilebase images) andnodenv(.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.
- Dropped
- 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.jsonnow all declare MIT, as does the defaultlicensefield stamped on skills exported byskills: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. %leanno longer keeps methodology-scoring gates:%leansuppresses the methodology system prompt, so the gates that score adherence to it are now withheld too — today that isframework-compliancealone. Non-framework gates continue to run under%leanexactly as documented; the correction is narrower than the previous wording suggested. Same applies to%cleanand to a prompt-levelsystem-promptopt-out.%judgeforces the methodology in and therefore keeps the gates.framework_gates: falsenow 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.excludenow 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.pymigrated tov_execution_statusSSOT view (Tier 4): Python hook now reads chain state from the cross-language SSOT view introduced in Tier 1, using the canonicalrun_statuscolumn (Tier 2) for boundary detection. Falls back tochain_sessionsper-row table, thenchain_run_registryblob, 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_VERSION15 → 16):framework_state,gate_system_state,argument_history, andresource_hash_cacheare now rows in a singlekv_statetable keyed on(tenant_id, key).SqliteStateStoreConfiggains an optional discriminatorkeyfor shared tables.state.dbis 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 thechain_run_registryblob write and the derivedchain_sessionsprojection inside a single transaction so the two can never diverge. RenamedsyncToSessionTable→projectToHookViewto reflect thatchain_sessionsis a read-only projection of the registry blob. SqliteChainRunRegistryclass removed: dead code with zero consumers. SingleDirectChainRunRegistryimplementation remains.- Command tokenizer refactor: Replaced duplicated operator detection across 3 parsing strategies with a single-pass, quote-aware
tokenizeCommand()functioncommand-parser.ts: 771→710 lines; symboliccanHandlereduced from 20 lines to 1; gate/framework/style stripping regex (~25 lines) replaced bytokens.promptId/tokens.rawArgsparser-utils.ts: 198→156 lines; removedhasOperatorOutsideQuotesandstripFrameworkOperatorOutsideQuotes(zero consumers — tokenizer subsumes)- Strategies now consume
TokenizedCommandinstead of re-detecting operators:canHandle(command, tokens)readstokens.formatandtokens.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_definitionswill begin executing in the next release — behavior change, action may be required. A prompt'sgateConfiguration.inline_gate_definitionsblock 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 bygates.executeInlineGateDefinitions(defaultfalsein this release,truein 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_promptscaffold — will start enforcing them. The bundled corpus is unaffected (no bundled prompt configures gates this way), but workspaces overlaid viaMCP_WORKSPACEcannot be inventoried from here. - What to do this release: watch the server log for
Dropped inline gate definitionwarnings (new below) and check any prompt named there. Setgates.executeInlineGateDefinitions: trueto 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-levelexclude— 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.
- Why you may care: a prompt in your workspace that declares inline definitions — possibly written before they were inert, or copied from the
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:exportcarry the old AGPL-3.0-only license field and must be regenerated to pick up MIT. - mcp-tools: resource_manager parameter
methodologyis nowframework; FrameworkCreationData.methodology removed andtypeis now required. - frameworks: FrameworkDefinition.methodology removed; use
type. - resource://methodology/ is now resource://framework/.
- prompts:
>>create_methodologyis now>>create_framework. - config: the config.json section
methodologiesis nowframeworks. 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 notype: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
renderedandresponse_capturedno 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_WORKSPACEto a directory withresources/subdirs — custom resources with the same ID as bundled ones take priority- Methodologies:
additionalMethodologiesDirsinRuntimeMethodologyLoader(mirrors gates pattern) - Styles:
additionalStylesDirsinStyleDefinitionLoader(mirrors gates pattern) - Prompts: Overlay merge in
data-loader.ts— loads primary then overlays per workspace dir - Gates: Already supported (unchanged)
- Methodologies:
- 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.typefor groupable incident triage - Enables incident queries like "show blocked requests by gate name" or "which stage is the bottleneck"
- Performance:
- Response Format Overlays: Methodologies and styles can define
responseFormatin YAML to guide LLM response structure at the tool description level- Methodology
responseFormatwoven into tool descriptions at synchronization time (global) - Style
responseFormatavailable for per-execution system prompt injection
- Methodology
- 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_WORKSPACEas 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_WORKSPACEwith standardresources/subdirectory structure, orMCP_RESOURCES_PATHfor custom resources base - PathResolver
get*Path()methods unified via sharedresolveResourceSubdir()helper - Per-loader
resolve*Dir()methods simplified to package.json + __dirname fallback only (env var handling removed) module-initializer.tsunconditionally initializes singletons with PathResolver-resolved dirs
- Migration: Use
- Prompt management consolidation: Migrated all prompt lifecycle operations from standalone
prompt_managertool to unifiedresource_managerwithresource_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
- All 12 prompt actions preserved:
- Client launch preset expansion: Extended
--clientstartup presets to includegemini,opencode, andcursor(in addition toclaude-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_agentis 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 tomarkdown-prompt-parser.ts; consolidated ~30 verbose info-level logstool-description-loader.ts(741→489): Extracted methodology/style overlay resolution totool-description-overlays.tsfile-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-operatorscodegen 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_managerMCP tool: Prompt lifecycle now exclusively viaresource_manager. The standaloneprompt_managertool 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!== undefinedpattern 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_FIELDSmap 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
mcpkey withcommandarray), and Gemini hooks prerequisite added. Fixed> [!NOTE]callouts not rendering inside<details>blocks - Custom Resources section: Documented
MCP_WORKSPACEoverlay behavior, removed false~/.local/share/claude-prompts/persistence claim, added per-client config examples withMCP_RESOURCES_PATH, added--initworkspace 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-summarybot
- 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.watchto Chokidar with automatic polling for WSL2/network filesystems- Auto-detects WSL2 environments and enables polling mode
- Configurable via
usePolling('auto' | true | false) andpollingInterval(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
strategicImplementwithout 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")
- Bare prompt names: Accept
- Fuzzy prompt suggestions: Multi-factor scoring replaces simple Levenshtein-only matching:
- Prefix matching (score +100):
ana→ suggestsanalyze_code,analyze_data - Word overlap (score +30/word):
code→ suggestscode_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
- Prefix matching (score +100):
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_analyzeunderscaffold_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.jsonvia 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
- prepare 1.3.0 release (225ebe6)
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