Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/markdown-format/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "markdown-format",
"version": "0.5.2",
"version": "0.5.3",
"description": "Auto-format and lint Markdown on edit via markdownlint-cli2, using the consuming repo's own markdownlint config.",
"author": {
"name": "Melodic Software",
Expand Down
23 changes: 15 additions & 8 deletions plugins/markdown-format/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
All notable changes to the `markdown-format` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.5.3]

### Changed

- Documentation-only prose hygiene: reworded changelog entries and hook comments
to describe past changes in consumer-meaningful terms, dropping
maintainer-internal vocabulary and a cross-plugin reference. No behavior
change to the hook or its output.

## [0.5.2]

### Changed
Expand All @@ -18,15 +27,13 @@ All notable changes to the `markdown-format` plugin are documented here. Format

- Setup `check` downgrades every prerequisite absence from FAIL to INFO while
the plugin's toggle is disabled (the hook exits through its enabled-gate
before probing, so a deliberately disabled plugin is not broken) — the same
class fix applied across the fleet's other hook-plugin setups.
before probing, so a deliberately disabled plugin is not broken).

## [0.5.0]

### Added

- **`setup` skill on the uniform contract** (fleet conformance wave, dim 8 —
the fleet's first conforming exemplar). `check` verifies the hook's runtime
- **`setup` skill on the uniform contract.** `check` verifies the hook's runtime
prerequisites read-only (Bash, `jq`, `markdownlint-cli2` resolution,
discovered markdownlint config + trust boundary, effective toggle);
`apply` re-checks and resolves — guidance for system tools and the native
Expand All @@ -40,15 +47,15 @@ All notable changes to the `markdown-format` plugin are documented here. Format

### Changed

- Refresh of the bundled shared hook-utils library, which gains the git argv-grammar parser used by
the guardrails plugin's git guards. No behavioral change to this plugin's hooks.
- Refresh of the bundled shared hook-utils library, which gains a git argv-grammar parser used by
git-guard hooks. No behavioral change to this plugin's hooks.

## [0.4.0]

### Changed

- **Missing-prerequisite notices now reach the user too, once per session**
(prerequisite-visibility wave). The jq and markdownlint-cli2 absence
- **Missing-prerequisite notices now reach the user too, once per session.**
The jq and markdownlint-cli2 absence
warnings — previously an `additionalContext`-only message repeated on every
edit — now use the shared visible-skip mechanism: one notice per session on
both channels (`additionalContext` for Claude, `systemMessage` for the
Expand Down
4 changes: 2 additions & 2 deletions plugins/markdown-format/hooks/markdown-format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ esac

# jq is required to parse Claude Code's hook payload and to emit structured
# PostToolUse context. Absent → visible once-per-session skip notice on both
# the agent and user channels (dim-9 doctrine), exit 0.
# the agent and user channels, exit 0.
hook::require_jq PostToolUse markdown-format "$INPUT"

FILE=$(printf '%s' "$INPUT" | hook::read_file_path) || exit 0
Expand Down Expand Up @@ -151,7 +151,7 @@ elif REPO_MDLINT="$(resolve_repo_markdownlint)"; then
else
# Never invoke a package runner here: hooks must not download or execute an
# unpinned package as a side effect of editing a file. Degrade visibly on
# both channels, once per session (dim-9 doctrine).
# both channels, once per session.
if hook::notice_once "markdown-format-markdownlint" "$INPUT"; then
hook::emit_skip_notice PostToolUse \
"markdown-format: markdownlint-cli2 is neither on PATH nor available as a contained repository-local node_modules/.bin executable — Markdown lint skipped for this session. Install it explicitly; this hook does not invoke npx or download tools."
Expand Down
8 changes: 4 additions & 4 deletions plugins/markdown-format/hooks/markdown-format.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Proves WIRING, not baseline parity: that the hook fires on *.md/*.mdc, skips
# otherwise, runs markdownlint-cli2 --fix from the linted file's repo root
# (config discovery is CWD-anchored), preserves --fix bytes, and surfaces
# residual findings via additionalContext with no medley-policy prose.
# residual findings via additionalContext with no repo-specific policy prose.
#
# Self-contained: builds a throwaway git repo with its own markdownlint config
# and runtime-generated fixtures (CRLF preserved via printf, never committed —
Expand Down Expand Up @@ -201,11 +201,11 @@ if printf '%s' "$CTX_B" | grep -q 'MD024'; then
else
fail "fixtureB ctx missing MD024: $CTX_B"
fi
# Genericized wrapper: medley-policy tail must be gone.
# Genericized wrapper: the repo-specific policy tail must be gone.
if printf '%s' "$CTX_B" | grep -qi 'commit/CI will block'; then
fail "fixtureB ctx still has medley policy tail"
fail "fixtureB ctx still has repo-specific policy tail"
else
ok "fixtureB ctx dropped medley policy tail"
ok "fixtureB ctx dropped repo-specific policy tail"
fi

# --- Fire gate: non-.md extension skips -------------------------------------
Expand Down
Loading