Releases: L3DigitalNet/Claude-Code-Plugins
up-docs v0.8.0
[0.8.0] - 2026-05-08
Added
hooks/hooks.json— plugin-shipped hook component (PreToolUse + PostToolUse) at the supported plugin path; replaces v1's invalid.claude/settings.jsonpackaging.scripts/deny-guard.sh— PreToolUse forbidden-command validator. Parses pipes, redirects,&&chains,$(), backticks; mirrors the auditor's<forbidden_commands>table. Defense-in-depth, NOT an enforced security boundary. 13 bats tests.scripts/capture-transcript.sh+scripts/_capture-redactor.py— opt-in PostToolUse capture hook. No-op unlessUP_DOCS_TRANSCRIPT_LOGis set; usesumask 077; redacts Bearer/ghp/ghs/AKIA/BAO_TOKEN/password/token/sk-ant-/aws_secret patterns; truncates output at 4 KiB; Bash only (Read excluded — file contents leak per GH-44868). 10 bats tests.tests/pyproject.toml— pinned test deps (pydantic ≥2.5, pytest ≥8.0, fastmcp optional, deepeval optional). Run fromplugins/up-docs/tests/.venv.tests/validate_output.py— Pydantic v2 discriminated-union validators for all four agent outputs. Layered reports useAnnotated[Union[RepoReport, WikiReport, NotionReport], Field(discriminator="layer")]; structural mismatch producesunion_tag_invalidnaming the bad tag and the expected literals. NotionReport additionally rejects IPv4 leaks; totals are reconciled against row actions.tests/verify_evidence_grounded.py— structured-evidence transcript verifier. Requiresexpected_output_signatureto literally appear intool_response.outputof a transcript record matchingevidence.command; closes the v1 audit's CR-003 gap (the command-but-output-contradicts case).tests/test_validate_output.pyandtests/test_verify_evidence_grounded.py— 26 self-tests including a CR-003-specific contradiction case and a Bug #4 no-record case.CLAUDE_CODE_SESSION_ID-based default state file inconvergence-tracker.sh— replaces v1 plan's broken-$$.jsondefault. Persists state across the multiple separate invocations the drift skill makes per session. 3 new bats tests.- README §Security — documents the plugin's defense-in-depth
deny-guard.shand recommends a consumer-sidepermissions.denyblock for projects that want a hard security boundary.
Changed
- Auditor (
up-docs-audit-drift) prompt:evidenceis now a structured object{command, expected_output_signature, source_tool_use_id?}instead of a free-form string. New no-fabrication rule in<verification_discipline>: whenexpected_output_signaturewas not literally observed in tool output, the auditor MUST setconfidence: "unverifiable"andevidence: nullrather than inventing a signature. All 4 examples + the output_format JSON updated to the structured shape. tests/run-bats.shhonors explicit path arguments (single files, directories, multiple files), falling back to the top-level glob when called bare. Closes CR-004's wrapper-side gap.- All five skill files now check for
python3in PATH at Step 1 and exit with a clear ERROR message if missing.
Fixed
- v1 plan's CR-001 through CR-008 audit findings — see
docs/plans/2026-05-08-up-docs-hardening-plan-v1-audit.mdfor the full list of structural defects this release closes.
Notes
- Phase 2 hook-firing smoke test (Task 8) result: PASS (2026-05-08, claude 2.1.133). See
plugins/up-docs/docs/phase-2-smoke-result.txt.
up-docs v0.7.2
[0.7.2] - 2026-05-08
Fixed
- README "Known Issues" no longer claims drift analysis is "designed for Opus 4.6" — auditor runs Sonnet by frontmatter; Opus is opt-in via the escalation block.
- Stale Claude Code v2.1.92 MCP-loading mitigation note removed from Known Issues.
- Duplicate
## [0.3.0]CHANGELOG entry merged into one block. tests/link-audit.batsno longer breaks on inputs containing single quotes; added a red-first regression test that exercises theO'Reilly-style failure case using the OLD pattern, then rewrites all 8 invocations to the safeprintf '%s\n' "$1"form.
Added
- README §Requirements now lists Python 3.x in
$PATHas a hard prerequisite (used by all four helper scripts underscripts/).
release-pipeline v2.2.0
[2.2.0] - 2026-05-07
Changed
- Direct-commit-to-
mainworkflow. Templates no longer assume atestingbranch. The L3DigitalNet/Claude-Code-Plugins repo retiredtestingon 2026-05-07; pipeline templates updated to match. All Phase 3 flows replacedgit checkout main && git pull && git merge testing --no-ffwith a singlegit pull --rebase origin mainstep. The trailinggit checkout testingstep is removed throughout — releases stay onmain. - Mode 1 renamed: Quick Merge → Quick Push. With no testing branch to merge, the mode now stages uncommitted changes (if any), commits, and pushes directly to
main. Same auto-staging UX, simpler underlying git flow. Filenamemode-1-quick-merge.mdretained for router-table backward compatibility. - Rollback suggestions for Phase 3 (before push) no longer include
git checkout testing. Thegit tag -d ... && git reset --soft HEAD~1rollback now runs in place onmain. - README mermaid diagram updated to show the simpler Phase 3 flow (no merge step).
Notes
- This release was bootstrapped manually (commit + tag +
gh release create) because the v2.1.2 templates require thetestingbranch and would have failed if used to release v2.2.0. Subsequent releases use the new (working) pipeline. - No interface changes for users on the
main-only convention. Repos that intentionally use atestingbranch must fork the templates or pin to v2.1.x.
qdev v1.5.0
Changed
- qdev: bump to v1.5.0 — qdev-researcher subagent
- qdev(README): fix mermaid label, prune-cmd safety, prose polish
- qdev: README — document qdev-researcher and handoff protocol
- qdev(research): fix callout ordering, summary early-exit, hint shape
- qdev: rewrite /qdev:research as thin orchestrator
- qdev(researcher): drop dead Glob/Grep permissions; fix Step 8 ordering
- qdev: add qdev-researcher subagent (Sonnet)
qdev v1.4.0
[1.4.0] - 2026-05-07
Changed
- qdev v1.4.0 — add Tavily MCP support across all commands and agents
plugin-test-harness v0.7.5
[0.7.5] - 2026-05-07
Changed
- plugin-test-harness: bypass workstation pre-commit hook in fix/ tests
- plugin-test-harness: Phase 2 — convergence + gap-analyzer + registry-shape (18 cases)
home-assistant-dev v2.2.8
[2.2.8] - 2026-05-07
Changed
- home-assistant-dev v2.2.8 — drop WebSearch from VALID_AGENT_TOOLS allowlist
docs-manager v0.2.4
[0.2.4] - 2026-05-07
Changed
- docs-manager v0.2.4 — replace forbidden WebSearch with MCP search backends
up-docs v0.7.1
[0.7.1] - 2026-04-24
Fixed
up-docs-propagate-repoagent now auditsAGENTS.mdandAGENTS.reviews.mdas mandatory targets on every run (same discipline asCLAUDE.md). These are Codex CLI's equivalent ofCLAUDE.md; v0.7.0's mandatory-audit list omitted them, so a V2 migration could leave their "Session handoff: docs/handoff.md" pointers unchanged — Codex sessions would then try to read a deleted file. Discovered by the drift auditor on the homelab/up-docs:allrun that ran immediately after v0.7.0 shipped. The auditor caught 4 findings; 2 of them were these two files.up-docs-propagate-repoV2 mandatory-audit block gains a post-split self-reference check: after Phase 1 has moved content fromdocs/handoff.mdintodocs/state.md(and siblings), grep the new files for literaldocs/handoff.mdstrings. Pre-migration Session Instructions text frequently contained self-references like "Checkdocs/handoff.md(this file)" that became stale after the file was renamed tostate.md. The check coversstate.md,deployed.md,architecture.md,credentials.md— any of which may have inherited handoff.md references from their source sections. Fix in-place. Drift auditor caught this on homelab (docs/state.md:11was the offender).- Stale-file-scan NEVER-flag list extended to include
AGENTS.reviews.md(was onlyAGENTS.mdin v0.7.0).
Notes
Both fixes traced to the same root cause — v0.7.0's mandatory-audit list was modeled on Claude Code's file set (CLAUDE.md + docs/) and didn't account for Codex-specific files or self-reference drift from renames. Neither was caught in v0.7.0's example block, which kept the gaps invisible until a real-world /up-docs:all invocation exercised the full audit path.
up-docs v0.7.0
[0.7.0] - 2026-04-24
Changed
-
Handoff-system-v2 adaptation.
up-docs-propagate-repo,/up-docs:repo, and/up-docs:allnow target the post-2026-04-24 handoff layout (docs/state.md+docs/deployed.md+docs/architecture.md+docs/credentials.md+docs/sessions/<YYYY-MM>.md+docs/bugs/<NNN>-*.md+docs/conventions.md+.claude/rules/*.md) while preserving full backward compatibility with the legacydocs/handoff.mdlayout via probe-based detection. Rationale: 23 repos in the author's fleet migrated to v2 during the 2026-04-24 batch (pre/post reduction 91.1% aggregate); the plugin now matches.- Layout detection: agent probes
docs/state.mdfirst. If present → V2; if absent anddocs/handoff.mdpresent → V1 legacy; otherwise NONE. No CLI flag or user input required. - V2 mandatory-audit rewrite:
docs/state.md(**Last updated:**+🔴/🟡/🟢active-incidents block under## Session Instructions, 2 KB hard cap),docs/deployed.md(deployment-truth rows + What Remains),docs/architecture.md(system graph, optional),docs/credentials.md(secret paths, optional),docs/sessions/<current-month>.md(append row with ≤20-word headline + commit SHAs + bug refs; update INDEX.md row count),docs/bugs/<NNN>-<slug>.md(create one per session-fixed bug with frontmatter; rundocs/bugs/_regen_index.pyafter),docs/conventions.md(numbered skeleton; full rule body may live in.claude/rules/after Phase 5 of migration),.claude/rules/<topic>.md(path-scoped behavioral rules, ≤200 lines per file),CLAUDE.md(usually no-change post-migration — pure index). - V1 legacy fallback: repos that haven't run the v2 migration still work. Agent falls back to the pre-0.7.0 audit (
docs/handoff.md+docs/conventions.md) and includes an advisory note in its output suggesting the migration. - Handoff brief (Step 6/7 in skills) upgraded: sources fields from the matching layout. V2 brief pulls Last-work from
docs/sessions/<current-month>.md, deployed fromdocs/deployed.md, active incidents fromdocs/state.md, open bugs fromdocs/bugs/INDEX.md(rows withstatus != fixed). V1 brief unchanged. NONE skips the brief silently. - Append-only bug KB rule codified: creating a new bug file uses
max(existing_ids) + 1; editing or renumbering prior bug files is forbidden. Supersession handled viasupersedes:/superseded_by:frontmatter fields, both files kept. - Stale-file scan NEVER-flag list extended to include v2 files (
docs/state.md,docs/deployed.md,docs/architecture.md,docs/credentials.md,docs/specs-plans.md), thedocs/sessions/anddocs/bugs/directories (persistent logs), and everything under.claude/(plugin-lifecycle-managed). python3 docs/bugs/_regen_index.pyis a sanctioned Bash call in the agent's guardrails (only destructive-adjacent operation allowed; rewritesdocs/bugs/INDEX.mdidempotently from frontmatter).
- Layout detection: agent probes
-
templates/drift-finding.mdexample row updated:docs/handoff.md→docs/deployed.mdto reflect the new layout's deployed-truth file.
Notes
Rule-body migration decision per repo:
- Phase 5 run (rule bodies in
.claude/rules/): extend the matching rules file; leavedocs/conventions.mdpointer unchanged. - Phase 5 deferred (real conventions.md still full-body): append to
docs/conventions.mdusing the six-field schema + Quick Reference row. - Template DOC-001/002/003 conventions.md: extend
docs/conventions.mdfor now; Phase 5 backfill will migrate to rules later.
The plugin does not enforce one or the other — it adapts to what exists.