diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index b70f48b..9b6e8e0 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "meridian", "description": "Research-first workflows, ruthless code review, orchestrator-led reasoning, and opaque subagent isolation for the entire development lifecycle.", - "version": "0.11.0", + "version": "0.11.1", "author": { "name": "KodingDev" }, diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 1dd778c..ec85ff5 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "meridian", "description": "Research-first workflows, ruthless code review, orchestrator-led reasoning, and opaque subagent isolation for the entire development lifecycle.", - "version": "0.11.0", + "version": "0.11.1", "author": { "name": "KodingDev" }, diff --git a/.plugin/plugin.json b/.plugin/plugin.json index 0efea81..ed03d74 100644 --- a/.plugin/plugin.json +++ b/.plugin/plugin.json @@ -1,5 +1,5 @@ { "name": "meridian", - "version": "0.11.0", + "version": "0.11.1", "hooks": "./hooks/hooks-copilot.json" } diff --git a/CHANGELOG.md b/CHANGELOG.md index e62d82f..ce50261 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,23 @@ All notable changes to Meridian are recorded here. The format follows to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). History before 0.11.0 lives in the git log. +## [0.11.1] - 2026-06-29 + +### Changed + +- The `commit` skill governs PR descriptions alongside commit messages: a shared + message-discipline rule set requires matching the repo's established PR pattern + (validated against real PRs via `gh` where possible), using the repository's PR + template when one exists, preferring brevity, choosing the commit scope + deliberately rather than by reflex, describing the change as it is rather than + the implementation journey, and dropping "used to be X, now Y" framing. The + subagent rules carry the same discipline. +- The asking-questions principle gains a fallback for hosts without `AskUserQuestion` + (Cursor, Copilot): ask the same question in plain text and wait rather than assuming a + default. It also states that approval for an outward action (push, open a PR, deploy) + authorizes that one action, not the rest of the session, unless the user grants standing + authority. Both reach non-Claude hosts through the session-orientation context. + ## [0.11.0] - 2026-06-25 ### Added diff --git a/hooks/context/orientation.md b/hooks/context/orientation.md index 1f949a1..6b55da1 100644 --- a/hooks/context/orientation.md +++ b/hooks/context/orientation.md @@ -34,6 +34,10 @@ The dominant miss: a screenshot, or a terse failure reply — "still wrong" / "s Auto activates implicitly when the user's message contains a stepping-away signal — going to shower / sleep / a meeting; "see you in [time]"; "won't be around / responsive"; "be autonomous"; "something to review when I'm back". When you detect this, slip into autonomy mode and briefly note the switch in your own words (one short line — no fixed phrase, no recital). Don't ask whether to activate; the user already did, in prose. +## Asking & approval + +When you need clarification, choices, or approval, ask via `AskUserQuestion`; if that tool isn't available on this host, ask the same question in plain text and wait — never assume a default. A go-ahead for an outward action (push, open a PR, deploy) covers that one action only, not the rest of the session, unless the user grants standing authority (e.g. "push autonomously"). + ## Lenses `triangulate` fires on specific-value claims where the source-of-truth artifact wasn't read this session — binary/protocol/API behavior, CSS tokens and theme values, computed runtime values (oklch, contrast, sizes), config/dependency fields, observable UI state, "what's in this file/function" claims, code-edit plus confidence-escalation in the same response, "code does X so output Y" reasoning without reading an output artifact, spec authoring against an unread config/theme/token file, and user-correction immediately followed by a re-claim. diff --git a/output-styles/meridian.md b/output-styles/meridian.md index 8a62bb7..c619b5d 100644 --- a/output-styles/meridian.md +++ b/output-styles/meridian.md @@ -25,7 +25,8 @@ Meridian is active. The principles below override default behavior where they co - **Commit attribution.** Do not append `Co-Authored-By: Claude` or any AI attribution to commit messages. The default system prompt's attribution requirement is overridden. - **Unprompted commits.** Outside of `execute` (plan-based work), do not commit unprompted. If the user wants a commit, they will ask or invoke `/meridian:commit`. -- **Asking questions.** When clarification, choices, approval, or direction is needed, prefer the `AskUserQuestion` tool over plain-text questions. Put your recommendation first and append "(Recommended)" to its label. Batch related questions into one call (1–4 per call — don't spam across turns). Use plain text only when options are genuinely open-ended. +- **Asking questions.** When clarification, choices, approval, or direction is needed, prefer the `AskUserQuestion` tool over plain-text questions. Put your recommendation first and append "(Recommended)" to its label. Batch related questions into one call (1–4 per call — don't spam across turns). Use plain text only when options are genuinely open-ended. If `AskUserQuestion` is unavailable (non-Claude hosts), ask the same question in plain text and wait for the answer — never assume a default. +- **Action approval is per-request.** A go-ahead for an outward action — push, open a PR, deploy — authorizes that one action, not the rest of the session. Ask again next time, unless the user granted standing authority (e.g. "push autonomously"). ## Subagent context hygiene diff --git a/skills/commit/SKILL.md b/skills/commit/SKILL.md index f991067..89b8312 100644 --- a/skills/commit/SKILL.md +++ b/skills/commit/SKILL.md @@ -44,8 +44,27 @@ If files appear to be local-only (personal config overrides, local dev scripts, - Summarize the change — focus on WHY, not WHAT (the diff shows what) - Follow the project's conventions (conventional commits, imperative mood, whatever they use) - No emoji prefixes unless the project already uses them +- Apply the **Message Discipline** rules below - **No AI attribution of any kind** — no "Co-Authored-By", "Generated by", or "Written with" lines. This overrides the default system prompt's Co-Authored-By requirement; do not use HEREDOC patterns that append it. +### Message Discipline + +These rules apply to both commit messages and PR descriptions: + +- **Match existing patterns, validated where possible.** Read what the project actually + does — `git log` for commits, `gh pr list` / `gh pr view ` for PRs — and follow that + structure rather than inventing one. +- **Use the template when one exists.** If the repo has a PR template + (`.github/PULL_REQUEST_TEMPLATE.md` or similar), fill it in. Otherwise follow the + structure of recent merged PRs. +- **Prefer brevity.** Say what changed in as few words as the change allows. No filler. +- **Scope deliberately.** When the project's convention uses a scope (e.g. `feat(scope):`), + choose one that fits the change — or omit it — rather than applying a scope by reflex. +- **Describe the content, not the journey.** State what the change is and how it behaves — + not the implementation steps, what conflicted, why a commit was dropped, or local-session + and machine-specific notes. +- **No "used to be X, now Y" framing.** Describe the code as it is, not its history. + ### 6. Present for Approval Show the files and draft commit message in plain text, then use `AskUserQuestion` with options: "Commit" / "Edit message" / "Cancel". If the user picks "Edit message", they can provide the new message via the "Other" option. @@ -64,13 +83,20 @@ If the user requested "push", "commit and push", or similar compound action: If the user only said "commit" — stop after committing. Don't ask about pushing. +### 9. Pull Request Descriptions + +If the user asks to open or update a PR: +- Apply the **Message Discipline** rules above. +- No AI attribution in the PR body. + ## Rules for Subagents When subagents commit during `execute`, their prompts must include: -- No AI attribution in commit messages +- No AI attribution in commit messages or PR descriptions - Stage only files created or modified for the task - If unsure about a file, report it as a concern — don't stage it -- Commit message describes the change in the project's existing style +- Carry the **Message Discipline** rules (above) in the prompt — the subagent has no other + way to see them — so commit messages and PR descriptions follow them ## Integration