提交

提交图

531 次代码提交

作者 SHA1 备注 提交日期
jon 112197c6bf fix(plugin-eval): broaden MISSING_TRIGGER pattern to match canonical phrasings (#530)
The static-layer trigger heuristic was a literal substring match on
"Use when …" / "Use this skill when …" / "Use proactively" / "Trigger
when …". Three real-world phrasings were missed:

1. Third-person canonical form recommended by Anthropic's own plugin-dev
   skill-development skill: "This skill should be used when …" (contains
   "used when", not "use when"). Running the previous regex on plugin-dev
   itself produces 7 false-positive MISSING_TRIGGER flags.

2. Prepositional temporal triggers: "Use after …", "Use before …",
   "Use immediately before …", "Use whenever …". Common in self-audit
   and hook-adjacent skills (e.g. functional-emotions: 6 flags).

3. Path-triggered self-documenting skills: "Auto-loads when …".

Extract the pattern to a module-level `_TRIGGER_PATTERN` and share it
between the anti-pattern detector and `_description_pushiness` so the
two sites stay in sync. Expand it to match `(should be )?use(d)?
(this skill )?(immediately )?(when|after|before|whenever)` plus
`auto-loads when` and `trigger when`.

Verification:
- plugin-dev (Anthropic's own): 33.82 → 55.18, MISSING_TRIGGER cleared
- functional-emotions: 39.04 → 59.68, all 6 false positives cleared
- 22 tests pass, including 11 new positive-form parametrised cases
  and 2 regression tests against canonical Anthropic phrasings.
2026-05-14 09:04:34 -04:00
jon 83d70bcc58 fix(plugin-eval): surface plugin-level depth downgrades loudly (#532)
`plugin-eval certify <plugin-dir>` advertises a deep, three-layer
evaluation (static + judge + Monte Carlo) but `EvalEngine.evaluate_plugin`
only runs the static layer regardless of requested depth, since judge
and Monte Carlo are per-skill primitives. The docstring on that method
acknowledges this, but nothing surfaces it to the user:

  - The CLI emits no warning.
  - The markdown report prints `**Depth:** deep` even though only the
    static layer ran.
  - The user's only signal is a footnote ("No model usage") near the
    bottom of the report and the `Confidence: Estimated` row — both
    easy to miss when the requested depth said otherwise.

This change makes the downgrade impossible to miss without changing
the underlying eval behaviour (per-skill judge aggregation is a larger
feature, not a bug fix):

1. **CLI warning to stderr.** `_run_score` detects plugin-target runs
   at non-quick depth and prints a yellow `warning:` line to stderr
   naming the skipped layers and the workaround (run on a single skill
   to get the deeper layers).

2. **In-band markdown callout.** `Reporter` now derives the *effective*
   depth from the set of layers actually present in the result. When it
   differs from the requested depth, the report header reads
   `Depth: deep (requested) → quick (effective)` and a `> Note:` block
   above the score table explains why and how to get the deeper layers.

3. **Effective-depth helper.** `_effective_depth(result)` maps the set
   of layer names (`static` / `judge` / `monte_carlo`) back to a `Depth`
   value, so the reporter never has to trust `result.config.depth` when
   describing what actually ran.

Tests:
  - `TestDepthDowngradeWarning` (4 tests): asserts the helper, the
    "no warning when honored" path, and the warning content for both
    deep and standard requests.
  - `TestCLI` (2 new tests): asserts the stderr warning is emitted on
    plugin-level certify and is *not* emitted at quick depth.

Full plugin-eval suite (75 tests) passes.
2026-05-14 08:57:04 -04:00
jau123 86bad08ba7 meigen-ai-design: bump to 1.0.7, pin npm to meigen@1.3.1 (#527)
Supersedes #525 (1.0.6 / meigen@1.3.0).

What's new in npm meigen@1.3.1:

- Veo 3.1 capability expansion: fast/pro tiers + 4/6/8s durations +
  720p/1080p/4K resolutions at the same price per tier+duration.
- Seedance 2.0 reference-video continuation: new `referenceVideo` +
  `referenceVideoDuration` paired params for semantic continuation
  of a previous clip.

No schema breaking changes — every new field is optional. Existing
1.3.0 calls continue to work unchanged.

Release notes: https://github.com/jau123/MeiGen-AI-Design-MCP/releases/tag/v1.3.1
2026-05-14 08:44:23 -04:00
Pranay Yadav 34632bcbea feat: add ship-mate plugin (#505) 2026-05-11 19:29:31 -04:00
Seth Hobson 9f9ba32370 docs: synchronize plugin/agent/skill counts (closes #517) (#522)
* docs: synchronize plugin/agent/skill counts (closes #517)

Live counts are 80 local plugins (81 incl. external git-subdir),
185 agents, 153 skills, 100 commands. Six docs were stale:

- marketplace.json metadata.description: 79/184/150 -> 80/185/153
- docs/plugins.md: 78 plugins (77 local) -> 81 plugins (80 local)
- docs/agents.md: 184 agents -> 185
- docs/agent-skills.md: 150 skills / 37 plugins -> 153 skills / 40 plugins
- docs/architecture.md: 79 plugins, 99 agents, 150 skills -> 81/185/153
- docs/usage.md: 150 skills, 79 plugins -> 153 skills, 80 plugins

Companion to 159ce68 which fixed README.md and CLAUDE.md.

* docs: fix model distribution sums + plugins.md framing

CodeRabbit follow-up on PR #522:

- docs/agents.md model distribution table summed to 99 (42+39+18) but
  the header now says 185 agents. Recounted from frontmatter:
  opus 54, sonnet 62, haiku 20, inherit 49 = 185. Added the missing
  Inherit row.
- docs/architecture.md model distribution table had the same stale
  42/39/18 sum; updated to 54/62/20/49 and renamed "Two-Tier" to
  "Four-Tier" since Inherit is now load-bearing.
- docs/architecture.md "average plugin size: 3.4 components" → 5.5,
  matching (185 + 153 + 100) / 80.
- docs/plugins.md headline reframed from "81 ... 80 local + 1 external"
  to "80 ... plus 1 externally-hosted" to match the GEMINI.md
  path-based rule (catalog headline counts local plugins).
2026-05-09 11:16:26 -04:00
Mike Henke a935f698dd feat: add Gemini CLI extension support (150+ skills via gemini-extension.json + GEMINI.md) (#512)
* chore: add .worktrees/ to .gitignore

Isolate git worktrees from version control to keep repository clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add Gemini CLI extension manifest

- Declare claude-agents as a Gemini CLI extension
- Point to GEMINI.md for bootstrap context
- Enable auto-discovery via gemini-cli-extension topic

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add Gemini CLI bootstrap context

- Document 150+ skills ecosystem for Gemini users
- Explain differences from Claude Code platform
- Provide plugin navigation and skill usage guidance
- Link to tool mapping and plugin catalog

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: Add Gemini CLI tool mapping reference

Add comprehensive docs/gemini-tool-mapping.md guide for users migrating from
Claude Code to Gemini CLI. Includes:

- Core Tools: Direct Equivalents (table format)
- Platform-Specific Features: Claude Code Only (slash commands, subagents, model tiers)
- Claude Code Specific: MCP Servers (description and migration guidance)
- Platform Differences: Behavior & Constraints (context limits, tool availability)
- Skill Design Guidelines (DO's and DON'Ts for Gemini compatibility)
- Migration Path (step-by-step guide for adapting Claude Code skills)
- Common Patterns (side-by-side code examples)
- FAQ (troubleshooting and common questions)

Document provides practical, self-contained guidance without requiring other docs,
though cross-references to GEMINI.md and plugins.md are included.

Co-authored-by: GitHub Copilot <noreply@github.com>

* fix: Correct syntax errors in code examples

- Lines 177-189: Convert Python pseudocode to valid bash for skill examples
- Line 347: Remove invalid read_file() function call; use sed for line extraction
- Lines 365-372: Replace mixed Python/bash with proper bash conditionals using exit codes

All code examples now syntactically valid and follow Gemini CLI bash patterns.

Co-authored-by: GitHub Copilot <copilot@github.com>

* docs: add Gemini CLI section to README

- Explain Gemini CLI extension availability and installation
- Link to GEMINI.md for navigation and tool mapping for platform differences
- Clarify multi-platform support (Claude Code primary, Gemini CLI skills)

* docs: add Gemini CLI plugin discovery guide

- List all 79 plugins organized by category with skill names
- Include natural-language trigger examples for Gemini auto-activation
- Complement GEMINI.md with detailed skill discovery navigation

* docs: update GEMINI.md to reference Gemini-optimized plugin guide

- Point plugin catalog navigation to gemini-plugin-guide.md for Gemini users
- Keep reference to plugins.md as full technical catalog fallback

* fix: remove trailing period from reference in GEMINI.md

* fix: correct repo URL, extension version, gitignore, and doc references

- Point install URL to upstream wshobson/agents (not fork)
- Set extension version to 1.0.0 (initial release)
- Fix .gitignore: restore .claude entry, add .worktrees/
- Fix broken @./plugins.md references → @./docs/plugins.md in tool-mapping doc

* fix: align Gemini extension name with marketplace, fix @./ refs, deduplicate plugin listing, fix pseudo-code, update README plugin count

* docs: add per-plugin GEMINI.md for all 79 plugins + generation script

Generated programmatically from each plugin's agents/commands/skills
frontmatter. Covers all three component types per plugin, providing
scoped context for Gemini CLI slash commands and developer workflows
inside the repo tree.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add ADR for Gemini CLI integration strategy

Documents the four options considered, why hierarchical GEMINI.md
scanning and per-repo splitting were rejected, and the key findings
(slash commands are supported in Gemini; install granularity is a
hard platform limit). Records pending Phase A work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Gemini CLI slash commands for all 100 plugin commands

Creates commands/<plugin>/<cmd>.toml for each of the 100 Claude Code
commands across 50 plugins, mapping /plugin:command to Gemini CLI's
TOML command format. Prompts are self-contained (no extension-relative
file inclusion) following confirmed patterns from real extension examples.

Includes generator script at tools/generate_gemini_commands.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add ADRs for Phase A slash commands and Phase B distribution decision

- 2026-05-01-gemini-slash-commands.md: documents TOML format, directory
  structure, self-contained prompt decision (no extension-relative @{path}),
  and auto-discovery. Includes primary source citations.
- 2026-05-01-per-plugin-gemini-md-distribution.md: documents why per-plugin
  GEMINI.md files are kept in the repo despite not auto-loading for extension
  users. Refutes size/security liability claims with verified data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add integration planning document

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor: remove per-plugin GEMINI.md files and generator (option C)

- Delete all 79 per-plugin GEMINI.md files (plugins/*/GEMINI.md)
- Delete per-plugin file generator (tools/generate_plugin_gemini_md.py)
- Eliminates false power user workflow benefit (files never auto-loaded)
- Keeps TOML slash commands for real discovery mechanism
- Single root GEMINI.md with bootstrap context remains

Rationale: Per-plugin files were in wrong location for Gemini CLI auto-discovery.
Power user benefit was fictional. Slash commands provide real discovery UX.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs(adr): update decisions to reflect Option C (removed per-plugin files)

ADR Updates:
- 2026-04-30-gemini-cli-integration.md: Explain Option C choice, document false power user claim
- 2026-05-01-gemini-slash-commands.md: Clarify slash commands are primary power user feature
- 2026-05-01-architecture-simplification.md (NEW): Document decision to remove per-plugin files
- docs/decisions/README.md: Updated to reflect final decision
- Archived: 2026-05-01-per-plugin-gemini-md-distribution.md

Rationale:
Audit revealed per-plugin GEMINI.md files don't auto-load (were positioned at root,
not in .gemini/ subdirectory). False power user benefit justification invalidated the
design. Slash commands (which do work) are the real power user feature.

Simplified architecture removes 79 files, 1 generator script, keeps all functionality.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: remove false power user claim from GEMINI.md, correct tool mapping doc, fix status claim

Critical fixes addressing three document contradictions:

1. GEMINI.md: Remove false auto-loading claim
   - Line 42 claimed: 'Power users (repo cloned) | Auto-loaded when you cd plugins/<name>/'
   - Audit + ADRs concluded this was INVALID (files never auto-loaded)
   - Yet GEMINI.md still published the lie as fact
   - Replaced with accurate description: slash commands are primary discovery mechanism

2. docs/gemini-tool-mapping.md: Correct slash commands status
   - Listed slash commands as 'Claude Code only' without noting Gemini TOML support
   - ADR 1 flagged: 'docs/gemini-tool-mapping.md requires correction (pending)'
   - Correction never happened
   - Updated to accurately describe Gemini's custom command support via TOML
   - Clarified difference: Gemini has extension-specific commands, not global shortcuts

3. docs/decisions/README.md: Fix 'IMPLEMENTED' status claim
   - Claimed: 'Status: IMPLEMENTED (2026-05-01)'
   - Reality: All work on feature/gemini-cli-integration, not merged to main
   - Main branch at c15b108 has zero Gemini files
   - Changed to: 'Status: IN REVIEW' + noted 'Merged to main: NO'

These fixes ensure architecture docs match implementation reality.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add ADR and plan for Gemini CLI integration

* feat: add Stitch MCP server integration

- Configure Stitch MCP via HTTP endpoint (https://stitch.googleapis.com/mcp)
- Follows pattern from VSCode MCP config and factory template
- Enables AI-powered UI/UX design capabilities via Google Stitch
- MCP server type: http with standard Accept header

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: remove working notes and design process artifacts from repo

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: remove invented top-level TOML commands with no Claude Code equivalent

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: implement sync engine and protocol orchestrator for Gemini CLI

Upgraded the Gemini CLI integration to address maintenance and functional gaps identified during review.

Key Improvements:
- Protocol Orchestrator: Slash commands now treat Markdown files as executable protocols, achieving functional parity with Claude Code's interactive checkpoints and multi-step workflows.
- Sync Engine: Replaced the simple generator with a robust Python utility in tools/ that handles validation, pruning of stale TOMLs, and cross-platform path resolution.
- Local-Opt-In Workflow: Users can now selectively generate slash commands for specific plugins via the Makefile, eliminating repository drift.
- Fail-Safe Build Tools: Updated the Makefile with robust cleanup and sync targets.
- Documentation: Comprehensive updates to GEMINI.md and README.md, including a Windows compatibility guide (Git Bash/WSL).

PR Cleanup:
- Removed all 97+ derived TOML files and duplicates.
- Deleted all design process working notes and internal plans.

Strategic Note:
This PR provides the technical foundation for Gemini CLI support but defers to the maintainer on the directional decision of officially supporting multiple harnesses. All Gemini-specific features are designed to be lightweight and opt-in, preserving the core identity of the repository as a Claude Code marketplace.

* fix(gemini-tool-mapping): close unclosed code fence in skill migration template

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: address PR review feedback and consolidate Gemini CLI documentation

- Consolidated installation into a unified Quick Start section for Claude Code and Gemini CLI.
- Removed unused YouTube Design Extractor tool and associated Makefile targets.
- Corrected and synchronized plugin/agent/skill counts (81/185/153) across all documentation.
- Streamlined Gemini Skill Discovery Guide and removed redundant tool mapping reference.
- Hardened Makefile security by adding proper shell quoting to PLUGIN variable.
- Added Gemini CLI-specific uninstall and sync-commands examples.

* chore: remove .mcp.json and update plugin/agent counts

- Remove .mcp.json (personal MCP config, not for repo)
- Update CLAUDE.md and README.md counts to reflect current branch state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: finalize gemini-cli integration and sync plugin counts

- Restore original YouTube Design Extractor functionality in Makefile
- Add Gemini CLI extension targets to unified Makefile
- Restore standalone YouTube tool files (yt-design-extractor.py, requirements.txt)
- Sync all documentation (README, CLAUDE, GEMINI, docs/*) to 81-plugin state
- Align marketplace.json metadata description with 81-plugin reality
- Resolve all PR review threads and merge conflicts with main

* docs: revert out-of-scope documentation count synchronization

Reverts global plugin/agent/skill count updates across existing reference docs
(CLAUDE.md, README.md, docs/*) to match origin/main state. Gemini CLI
documentation remains focused on the integration itself.

* fix: restore plugin/agent counts in CLAUDE.md to match upstream

Counts were incorrectly lowered in a previous commit. Using upstream values
pending doc sync resolution in #517.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: revert marketplace.json drift, restore Makefile Options help block

- Revert .claude-plugin/marketplace.json to upstream (description text was drifted)
- Restore Options block (URL/INTERVAL/OUTPUT/ENGINE) in Makefile help target

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: restore upstream README.md content removed by drift

- Fix plugin count in Key Features: 81 → 80 (upstream value)
- Fix architecture diagram comment: 77 → 81 plugins (80 local + 1 external)
- Restore Troubleshooting section dropped in prior session

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* remove: docs/gemini-plugin-guide.md (not useful)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(gemini): update broken links after doc removal

* docs: add update, clean-commands, and uninstall workflows to Gemini CLI section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: correct stale plugin/skill counts in gemini-extension.json and GEMINI.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Revert "fix: correct stale plugin/skill counts in gemini-extension.json and GEMINI.md"

This reverts commit 5a4a06d49f263d9eaa76a83d55b4141c8e4a0fc6.

* security: harden build tools and fix cross-platform paths

- Makefile: apply strict shell quoting to prevent command injection
- tools/generate_gemini_commands.py: rewrite using pathlib for Windows/Linux parity
- tools/generate_gemini_commands.py: add path validation to prevent traversal in pruning
- tools/generate_gemini_commands.py: add docstrings for maintainability
- GEMINI.md: fix numbering sequence in setup instructions

* docs(GEMINI): add Safety and System Integrity section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): restore full Claude Code quick start into collapsible section

Original Step 1/Step 2 instructions were stripped to two lines. Restores
the complete content (plugin examples, explanatory text) inside the
recommended collapsible — no instructions removed, just reorganized.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): restore Claude Code intro, add Gemini CLI section, clarify scope

- Reverts all Gemini CLI parenthetical notes injected into Claude Code bullets
- Restores original wording (100 Commands, Install only what you need, etc.)
- Adds dedicated ## Gemini CLI section after Overview with its own feature list
- Retitles 'Plugins vs Agents' to clarify it is Claude Code only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): use markdown bold in summary tags instead of <b>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Revert "docs(readme): use markdown bold in summary tags instead of <b>"

This reverts commit 19b879760f248e9e049f7f3dc83fbd23cf6c87d0.

* docs(GEMINI): reduce context bloat, remove duplicate sections

- Removed duplicate Slash Commands, How to Use Skills, and Common Skill
  Categories sections (all repeated Navigation content)
- Replaced full Skill Library listing with a link to docs/plugins.md
- Removed stale metadata block and incorrect "already installed" claim
- 167 lines → 55: leaner per-prompt context overhead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: correct extension directory path from 'agents' to 'claude-code-workflows'

Extension installs as claude-code-workflows, not agents. All cd paths
and TOML cleanup references in README and GEMINI.md were pointing to a
directory that does not exist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): keep README Claude Code-first, badge links to GEMINI.md

- Remove ## Gemini CLI section and Gemini CLI Quick Start collapsible
- Unwrap Claude Code Quick Start from collapsible (back to original format)
- Restore 'Plugins vs Agents' heading (no Claude Code only qualifier needed)
- Add Gemini CLI badge next to Smithery badge pointing to GEMINI.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): add GitHub NOTE callout for Gemini CLI users

Badge alone is easy to miss. The [!NOTE] callout renders visually
distinct on GitHub and gives Gemini users enough context to find
GEMINI.md without disrupting Claude Code content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: sync counts to upstream and correct skill activation wording

- gemini-extension.json: 79 plugins/150+ skills → 80/153 (matches upstream)
- GEMINI.md: skills don't auto-activate silently; Gemini CLI asks first
- README callout: 'auto-discovered' → 'discoverable on-demand' (accurate)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): add Gemini CLI entry to What's New section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(readme): match What's New link style for Gemini CLI entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(gemini): update comparison table for accuracy

* docs(gemini): correct command example prefix

* feat(gemini): improve sync engine to respect opt-in principle

- tools/generate_gemini_commands.py: only sync existing plugins by default (Smart Sync)
- tools/generate_gemini_commands.py: add --all flag for explicit full generation
- Makefile: update generate-all-commands to use --all
- Makefile: improve clean-commands to remove directories

* docs(gemini): audit and update GEMINI.md with high-fidelity counts and library summary

- Verified 80 plugins, 153 skills, 185 agents, and 100 commands against actual codebase.
- Re-added audited Skill Library summary for improved discovery.
- Corrected Plugin Catalog link and verified all technical examples.
- Reinforced Safety and System Integrity section.

* fix(GEMINI): replace colon-namespace syntax with flat Gemini slash command names

Gemini CLI does not support the /plugin:command namespace syntax used by
Claude Code. Updated Protocol Orchestrator example and Slash Commands
section to use flat /command-name format.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert: restore colon namespace syntax in GEMINI.md slash command examples

Gemini CLI derives command names from file paths — subdirectory separators
become colons, so commands/tdd-workflows/tdd-cycle.toml → /tdd-workflows:tdd-cycle.
The colon syntax is correct and matches the Claude Code namespace pattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: GitHub Copilot <noreply@github.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 09:18:10 -04:00
dependabot[bot] 74fd2a5798 chore(deps): bump python-multipart in /plugins/plugin-eval (#521)
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.26 to 0.0.27.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.27
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-09 09:08:48 -04:00
Seth Hobson ece811f233 docs(security-scanning): remove links to unwritten SAST reference and asset files (#516)
The Reference Documentation and Templates & Assets sections of
sast-configuration's SKILL.md linked to six files that don't exist
(references/{semgrep-rules,sonarqube-config,codeql-setup}.md,
assets/{semgrep-config.yml,sonarqube-settings.xml}, scripts/run-sast.sh).
The references/, assets/, and scripts/ directories were created but
never populated. Removed the two sections so the skill no longer
points users at 404s; the inline configuration examples that
remain in the skill body cover the immediate setup needs.

A repo-wide sweep across all 153 SKILL.md files confirms no other
dead references/, assets/, or scripts/ links remain.

Fixes #514
2026-05-02 17:35:12 -04:00
Seth Hobson 159ce683c8 docs: refresh README/CLAUDE.md counts (#515)
README and CLAUDE.md still cited the prior plugin/agent/skill/command totals.
Updated to current main: 80 plugins, 185 agents, 153 skills, 100 commands
(81 marketplace entries: 80 local + 1 external git-subdir).

Fixes #513
2026-05-02 17:34:45 -04:00
Travis 51d8a2dd54 feat: add brand-landingpage plugin (Stitch-backed landing page workflow) (#509) 2026-05-02 17:14:47 -04:00
jau123 7d17c7552d meigen-ai-design: bump to 1.0.5, pin npm to meigen@1.2.13 (#510)
Co-authored-by: jau123 <quaasparrotte@gmail.com>
2026-05-02 17:14:31 -04:00
Seth Hobson c15b108a8d Merge pull request #495 from tomjwxf/feat/review-agent-governance-plugin
feat: add review-agent-governance plugin (second inhabitant of governance category)
2026-04-27 20:29:49 -04:00
Seth Hobson 1ca21d893b docs(review-agent-governance): fix SKILL.md compose example
Update the "Composing with protect-mcp" example to use the current
hooks array schema and pin protect-mcp@0.5.5, matching the runtime
hooks.json. Prevents users from copy-pasting a config that current
Claude Code refuses to load.
2026-04-27 20:27:59 -04:00
Tom Farley 02e77c58ca fix(review-agent-governance): use current hooks array schema
Migrates plugins/review-agent-governance/hooks/hooks.json from the
deprecated singular "hook": {...} shape to the current
"hooks": [{...}] array shape, matching the schema fix that landed
in #503 for plugins/protect-mcp/hooks/hooks.json.

Same conversion applied to both PreToolUse and PostToolUse blocks:

  Before: { "matcher": ".*", "hook": {"type": "command", ...} }
  After:  { "matcher": ".*", "hooks": [{"type": "command", ...}] }

Verified the resulting structure matches the post-#503 shape used by
plugins/protect-mcp/hooks/hooks.json byte-for-byte at the schema level.
Without this fix, current Claude Code reports
"path: hooks.PreToolUse.0.hooks - expected array, received undefined"
on plugin load.
2026-04-26 19:53:53 -04:00
tommylauren 0ae6bca711 fix(review-agent-governance): pin protect-mcp@0.5.5 in hooks.json
Resolves wshobson's blocker: npx protect-mcp@latest reintroduces the
reproducibility gap closed by #497 for the protect-mcp plugin. Pins
both PreToolUse and PostToolUse hook invocations to 0.5.5.
2026-04-26 19:52:50 -04:00
tommylauren cb381c47d1 fix: address @wshobson review feedback on #495
Three blocking items + one non-blocking clarification from the review:

1. marketplace.json unicode regression FIXED. Reset the file to upstream
   HEAD, then inserted ONLY the review-agent-governance entry with a
   string-based append that preserves every existing UTF-8 character
   byte-for-byte. No entries other than the new one are modified.
   `grep -c '\\u' marketplace.json` returns 0 escape sequences.

2. approve-review.md $1 → $ARGUMENTS. The marketplace slash-command
   convention (per plugins/codebase-cleanup/commands/deps-audit.md from
   PR #490) is $ARGUMENTS, which captures the full argument including
   spaces. $1 only captured the first word. Also JSON-escape the reason
   before embedding in the approval record (via python3 json.dumps) so
   quotes, backslashes, and newlines do not break the JSON body. This
   resolves the non-blocking JSON-escape note too.

3. README honesty on the approval log. Previously claimed the chain
   "records exactly which actions were human-gated and when," which was
   overstating: approval log entries under ./review-receipts/approvals/
   are plain JSON, not signed. Rewrote that paragraph to explicitly
   separate the signed PostToolUse chain (covered by
   @veritasacta/verify) from the operator-trust approval log. Points
   users at protect-mcp sign directly if they need signed approval
   records for regulated environments.

4. Added an explicit note on what the signed chain covers when the
   approval flag is present: PreToolUse short-circuits without calling
   Cedar, so the downstream PostToolUse receipt has decision:allow but
   no policy_digest. Auditors walking the chain should expect this.
   Resolves the "document the short-circuit" non-blocking item.

Not addressed (pending Seth's follow-up):
- marketplace.json conflict with #496 will be resolved by rebase order
  (whichever merges first; the other rebases)

Tests:
- python3 -m json.tool validates marketplace.json, plugin.json, hooks.json
- grep -c '\\u' on marketplace.json = 0
2026-04-26 19:52:50 -04:00
tommylauren 7e1aa0f977 feat: add review-agent-governance plugin (closes review-bot failure class)
Second inhabitant of the `governance` category. Addresses the failure mode
where an AI agent posts PR reviews, comments, merges, or edits CI config
without a human gate. Directly inspired by the Hermes-style incident
pattern where review-bot hallucinations produce account-linked damage.

Components
──────────
- plugin.json, README.md, skills/review-agent-setup/SKILL.md
- agents/review-policy-author.md (sonnet) — Cedar author specialized in
  review-surface gating across GitHub / GitLab / protected branches /
  CI paths / notification surfaces
- commands/approve-review.md — opens an approval window via ./.review-approved
  flag file, records the reason in ./review-receipts/approvals/
- commands/list-pending.md — walks the receipt chain to show recent denials
  (the set of actions the agent tried that were blocked)
- hooks/hooks.json — PreToolUse gate + PostToolUse sign
- policies/review-agent-governance.cedar — default Cedar policy with five
  forbid rules covering gh/glab review actions, protected-branch pushes,
  CI config paths, and WebFetch POSTs to hooks.slack.com / api.github.com

Behavior
────────
By default, the plugin forbids:
  - gh pr review|comment|merge|close|edit, gh issue comment|close|edit,
    gh release create|edit, gh api repos
  - GitLab and Bitbucket equivalents
  - git push to main|master|release|production
  - Writes to .github/workflows/, .gitlab-ci.yml, .circleci/config.yml,
    .github/CODEOWNERS
  - WebFetch POSTs to api.github.com / api.gitlab.com / hooks.slack.com /
    discord.com

Non-review actions pass through unchanged. Composes with protect-mcp for
general policy enforcement; configure separate receipt directories to
keep the chains distinct.

Approval pattern
────────────────
Human opens an approval window by creating ./.review-approved (or via
/approve-review "<reason>"). The PreToolUse hook short-circuits to
permit while the flag is present. Every action, approved or denied,
still produces an Ed25519 receipt, so the chain records exactly what
happened and under what approval.

Marketplace entry
─────────────────
Added under category: "governance" with seven discovery keywords. The
governance category now has two inhabitants (protect-mcp + this one),
which turns it from a vanity category into a real shelf.

Standards
─────────
- Ed25519 (RFC 8032), JCS (RFC 8785), Cedar (AWS)
- IETF draft-farley-acta-signed-receipts
- Uses protect-mcp as its evaluation/signing runtime
2026-04-26 19:52:50 -04:00
Seth Hobson adde832d8f fix: add missing frontmatter to service-mesh-expert and monorepo-architect
Both agent files were missing YAML frontmatter entirely, leaving them
unloadable as plugin agents. Adds name/description/model frontmatter
matching the conventions used by sibling architecture agents in each
plugin (opus tier, description sourced from existing intro line).

Bumps cloud-infrastructure to 1.3.1 and developer-essentials to 1.0.3.

Reported in #500.
2026-04-26 16:42:31 -04:00
Seth Hobson 89b93d5db4 Merge pull request #499 from thc1006/fix/supply-chain-hardening-v2
fix: supply chain hardening — pin actions, images, and fix secret logging
2026-04-26 16:26:17 -04:00
Seth Hobson 18a93eaac2 Merge pull request #504 from jau123/update-meigen-1.2.10
meigen-ai-design: bump to 1.0.2 (meigen@1.2.10)
2026-04-26 16:26:14 -04:00
Seth Hobson 1baffaa4aa Merge pull request #503 from DiyRex/patch-1
fix(protect-mcp): use current hook schema (hooks array)
2026-04-26 16:26:09 -04:00
jau123 d2abf70891 meigen-ai-design: bump to 1.0.2 (meigen@1.2.10, supersedes 1.2.9)
Updates to match upstream MeiGen MCP release 1.2.10.

- Bump pinned MCP server: meigen@1.2.8 → meigen@1.2.10
- Bump plugin version and marketplace entry: 1.0.1 → 1.0.2

Why skip 1.2.9:
meigen@1.2.9 was deprecated on npm earlier today because of a pricing
regression. It set GPT Image 2.0 as the new default model but left the
server-side `resolution` fallback at 2K, silently doubling credit cost
for users who did not pass `resolution` explicitly. 1.2.10 defaults
gpt-image-2 to 1K (10 credits, matching the platform product default).

What changed in meigen@1.2.10:
- gpt-image-2* defaults to 1K/medium = 10 credits
- New generate_image parameters: `resolution` (1K / 2K / 4K) and
  `quality` (low / medium) for opt-in upgrades or cost savings
- list_models now surfaces each model's supported resolutions and
  quality tiers (via extra_config) so the host LLM can make
  informed cost / detail tradeoffs
- SERVER_INSTRUCTIONS gains a "GPT Image 2.0 resolution / quality"
  section guiding the LLM to stay on 1K unless the use case
  (poster/print/wallpaper) justifies the cost

No behavioral change to agents, commands, or required env vars.

Upstream release: https://github.com/jau123/MeiGen-AI-Design-MCP/releases/tag/v1.2.10
npm deprecation note: https://www.npmjs.com/package/meigen/v/1.2.9
2026-04-23 19:17:30 +08:00
Devin Dissanayaka 4510da4e1f Refactor hooks to use hooks array structure 2026-04-23 11:14:48 +05:30
thc1006 5a36aa23b7 fix: supply chain hardening — pin actions, images, and fix secret logging
Supply chain:
- Pin GitHub Actions to stable releases instead of @master/@main:
  trivy-action@0.28.0, snyk@0.4.0, sonarcloud@v3, dependency-check@v6
- Update EOL actions: upload-artifact v3→v4, codeql/upload-sarif v2→v3,
  codecov v3→v4
- Pin container images to specific tags instead of :latest:
  kubectl:1.31, vault:1.17, prometheus:v3.2, jaeger:1.62, tempo:2.7,
  sonarqube:10.8-community, trivy:0.58.0, trufflehog:3.88, uv:0.6,
  temporalio auto-setup:1.26, temporalio ui:2.33

Security:
- Replace echo of secrets in CI examples with env var injection pattern
  (secrets-management SKILL.md)

Misc:
- Fix CRLF → LF line endings in deployment-engineer.md
2026-04-19 11:13:46 +00:00
Seth Hobson 27a7ed9575 Merge pull request #496 from tomjwxf/feat/signed-audit-trails-skill
feat: add signed-audit-trails teaching plugin (third governance-category skill)
2026-04-18 14:30:34 -04:00
Seth Hobson 32e1a749ac Merge pull request #497 from tomjwxf/chore/pin-protect-mcp-versions
chore(protect-mcp): pin protect-mcp@0.5.5 and @veritasacta/verify@0.3.0
2026-04-18 14:30:28 -04:00
tommylauren da311bfc54 chore(protect-mcp): pin protect-mcp@0.5.5 and @veritasacta/verify@0.3.0
Closes the version-pinning suggestion from @wshobson on #494. The
tamper-detection test in plugins/protect-mcp/test/run-tests.sh
previously called `npx protect-mcp@latest` and `npx @veritasacta/verify`
with no version constraint, meaning an upstream npm publish could
flip the test green or red without any repo-side signal. Pinning
eliminates that.

Changes
───────
- plugins/protect-mcp/hooks/hooks.json: 2 x
    protect-mcp@latest -> protect-mcp@0.5.5
  (PreToolUse evaluate + PostToolUse sign)

- plugins/protect-mcp/test/run-tests.sh:
    6 x protect-mcp@latest -> protect-mcp@0.5.5
    3 x @veritasacta/verify    -> @veritasacta/verify@0.3.0
  (the four PreToolUse test invocations, keygen, sign, plus the two
  verify calls in tests 7 and 8)

- Header comment at the top of run-tests.sh now mentions the pinned
  @veritasacta/verify version for clarity.

What is NOT pinned
──────────────────
README.md and SKILL.md references remain as `npx protect-mcp@latest`
and `npx @veritasacta/verify`. Those are documentation of the pattern
a user should use in their own project, and "latest" is the right
advice for that audience. The test infrastructure is the only
executed path where pinning matters for reproducibility.

How to bump
───────────
When you want to update (e.g., protect-mcp publishes 0.6.0 with a
breaking change to --input handling), update both files together:

  perl -i -pe 's/protect-mcp\@0\.5\.5/protect-mcp\@0.6.0/g' \
    plugins/protect-mcp/hooks/hooks.json \
    plugins/protect-mcp/test/run-tests.sh

Then re-run ./plugins/protect-mcp/test/run-tests.sh to confirm the
tamper-detection guard still passes before merging.

This PR does NOT touch review-agent-governance or signed-audit-trails
because those plugins are still in review (#495, #496). Once they
land, a follow-up PR will pin them too.

Tests
─────
- python3 -m json.tool hooks.json passes
- bash -n run-tests.sh passes
- No other files touched; no marketplace.json changes (avoids conflict
  with #495 and #496)
2026-04-17 20:54:55 -04:00
tommylauren 34b0c54227 fix: address @wshobson review feedback on #496
1. marketplace.json unicode regression FIXED. Same fix as #495: reset
   the file to upstream HEAD and did a string-based append of only the
   new signed-audit-trails entry. No other entries are touched. Verified
   with grep on \\u escape sequences returning 0.

2. refs.arewm.com/agent-commit/v0.2 link verified. curl -sIL returns
   HTTP 200; the page is live and correct.

Non-blocking thought (standalone plugin vs skill under protect-mcp)
acknowledged; keeping as standalone for v0.1 since the user-evaluation
path ('read before commit to infrastructure') works better without
requiring protect-mcp install first. Happy to restructure if the
maintainer prefers the nested-skill shape.

Strict-form --fail-on-missing-policy true production example deferred
to a follow-up SKILL revision. Not in this fix since it would be new
content rather than a bug fix.
2026-04-17 13:52:54 -04:00
Seth Hobson 9a8ad81832 Merge pull request #494 from tomjwxf/test/protect-mcp-fixtures
test(protect-mcp): add test/ fixtures and round-trip verification
2026-04-17 13:15:37 -04:00
Seth Hobson 8e40baf81e Merge pull request #492 from xiaolai/fix/nlpm-framework-migration-frontmatter
fix: add missing YAML frontmatter to framework-migration and c4-architecture commands
2026-04-17 13:15:34 -04:00
Seth Hobson 5d531af4a0 Merge pull request #491 from xiaolai/fix/nlpm-error-diagnostics-frontmatter
fix: add missing YAML frontmatter to error-diagnostics commands
2026-04-17 13:15:32 -04:00
Seth Hobson 53d359d499 Merge pull request #490 from xiaolai/fix/nlpm-codebase-cleanup-frontmatter
fix: add missing YAML frontmatter to codebase-cleanup commands
2026-04-17 13:15:28 -04:00
Seth Hobson 673b90b832 Merge pull request #489 from xiaolai/fix/nlpm-meigen-agents-missing-name
fix: add missing name field to all 3 meigen-ai-design agents
2026-04-17 13:15:24 -04:00
Seth Hobson 8ef279aeda Merge pull request #488 from xiaolai/fix/nlpm-threat-modeling-expert-frontmatter
fix: add missing YAML frontmatter to threat-modeling-expert agent
2026-04-17 13:15:22 -04:00
tommylauren 7d7fb736be feat: add signed-audit-trails teaching plugin
Companion to the existing protect-mcp and review-agent-governance plugins
in the governance category. This one is a teaching skill, not a runtime
hook: a cookbook-style walkthrough for explaining, evaluating, or
demonstrating the signed-audit-trails pattern before committing to the
protect-mcp infrastructure.

Contents
────────
- plugin.json, README.md (explains this is a teaching skill, not runtime)
- skills/signed-audit-trails-recipe/SKILL.md (~1600 words) walking through:
    1. Hook configuration in .claude/settings.json
    2. Cedar policy authoring (four permit/forbid rules)
    3. Using Claude Code normally with hooks active
    4. Inspecting a produced receipt
    5. Verifying the chain with @veritasacta/verify
    6. Demonstrating tamper detection live
  Plus: three-invariant cryptographic model (JCS + Ed25519 + hash chain),
  cross-implementation interop table (4 implementations), CI/CD YAML
  snippet, SLSA composition via ResourceDescriptor byproduct, common
  pitfalls, references.

Marketplace entry
─────────────────
Added under category: "governance" immediately after protect-mcp. Keywords
emphasize the tutorial/cookbook nature ("tutorial", "skill", "recipe") to
distinguish from the runtime plugins.

Why this is useful alongside the two existing plugins
─────────────────────────────────────────────────────
protect-mcp is runtime. review-agent-governance is runtime (with human-
approval pattern). signed-audit-trails is education. A user evaluating
whether to adopt receipts can invoke the skill to get the concept and a
reproducible demo in-session, then install the runtime plugin if they
decide to proceed. Pairs naturally with /audit-chain and /verify-receipt
slash commands shipped in protect-mcp.

No new dependencies. Same IETF draft + @veritasacta/verify references as
the other governance plugins.
2026-04-17 12:48:11 -04:00
tommylauren 120dc3ad6f test(protect-mcp): add test/ fixtures and round-trip verification
Follow-up to #484 closing the test-plan commitment. Adds a
plugins/protect-mcp/test/ directory with:

  - Six deterministic fixtures covering PreToolUse (allow + deny paths
    on Read / Bash safe / Bash destructive / Write) and PostToolUse
    (receipt signing input)
  - A Cedar test policy exercising both permit and forbid semantics
  - An expected receipt-schema.json (JSON Schema draft-07) pinned to
    draft-farley-acta-signed-receipts required fields
  - run-tests.sh: full round-trip, requires node >= 18 and python3.
    Eight tests covering evaluate (permit/forbid exit codes), sign
    (receipt file produced), schema conformance, verify (valid + tamper
    detection).
  - verify-fixtures.sh: static fixture validation, python3 only, safe
    to run in sandboxed CI without network access.
  - README.md explaining the layout, how to run, and the exit-code
    convention (including 77 = autotools "skip" for missing tools).

The critical regression guard is test 8: flipping the `decision` field
in a signed receipt MUST invalidate the Ed25519 signature, so
`@veritasacta/verify` MUST exit 1. This locks in the tamper-detection
property that the plugin claims.

No changes to the plugin itself. No new runtime dependencies. No
changes to marketplace.json or hooks.json.
2026-04-17 10:20:24 -04:00
claude[bot] de27846495 fix: add missing frontmatter to framework-migration and c4-architecture commands
Three commands lacked YAML frontmatter and silently failed to register
in Claude Code. Added minimal description frontmatter to:
- framework-migration/commands/code-migrate.md
- framework-migration/commands/deps-upgrade.md
- c4-architecture/commands/c4-architecture.md

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-17 12:55:15 +00:00
claude[bot] 2acb95307a fix: add missing frontmatter to error-diagnostics commands
All three commands in the error-diagnostics plugin had no YAML frontmatter,
causing them to silently fail registration in Claude Code. Added minimal
description frontmatter to each command.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-17 12:54:38 +00:00
claude[bot] 7b2105f7fb fix: add missing frontmatter to codebase-cleanup commands
All three commands in the codebase-cleanup plugin had no YAML frontmatter,
causing them to silently fail registration in Claude Code. Added minimal
description frontmatter to each command.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-17 12:53:58 +00:00
claude[bot] 73ed4fbae3 fix: add missing name field to meigen-ai-design agents
All three agents in the meigen-ai-design plugin had frontmatter blocks
but were missing the required `name` field. Without a name Claude Code
cannot identify or register these agents, making the entire plugin
non-functional.

Added `name:` derived from each file's filename:
- prompt-crafter.md → name: prompt-crafter
- gallery-researcher.md → name: gallery-researcher
- image-generator.md → name: image-generator

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-17 12:53:13 +00:00
claude[bot] fafa270432 fix: add missing frontmatter to threat-modeling-expert agent
The agent had no YAML frontmatter (name, description, model), causing
Claude Code to fail silently on registration. Without frontmatter the
agent is completely unavailable to users.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-17 12:52:19 +00:00
Seth Hobson 87b81e9d64 docs: add Pensyve as a related plugin with install instructions
Pensyve is distributed from its own marketplace (major7apps/pensyve) so
version updates flow directly from the source. Reference it as a related
plugin in both the README and plugin reference doc with install commands.
2026-04-16 13:40:14 -04:00
Seth Hobson f374e5a353 chore: remove pensyve from marketplace
Pensyve is now distributed exclusively from its own marketplace at
major7apps/pensyve. Removing the git-subdir entry from this marketplace
to avoid version drift (plugin.json in the subtree was stale vs the
source repo).

- Drop pensyve entry from .claude-plugin/marketplace.json
- Update plugin counts: 79 → 78, AI & ML 5 → 4
- Update docs/plugins.md and README.md accordingly
2026-04-16 13:37:09 -04:00
Seth Hobson 20605a6ce9 docs: bump OpenAI references from GPT-5.2 to GPT-5.4
Covers all 18 occurrences across 9 files: marketplace.json description,
llm-application-dev plugin.json / README / agents / commands / skills
references, agent-orchestration multi-agent-optimize, and
performance-testing-review ai-review. No GPT-5.3 references existed.

JSON validated; pytest unaffected.
2026-04-16 13:19:42 -04:00
Seth Hobson 20d7a31a4f docs: bump Opus references from 4.6 to 4.7
- README.md: three-tier model strategy now lists Opus 4.7; Tier 1
  table entry and pricing bullet updated
- llm-application-dev README, ai-engineer agent, prompt-engineer agent:
  Anthropic model list now reads Opus 4.7, Sonnet 4.6, Haiku 4.5
- plugin-eval judge.py: model map resolves "opus" tier to
  claude-opus-4-7 (the ID the LLM judge layer hands to the SDK)

Sonnet 4.6 and Haiku 4.5 references left alone — those are the current
model versions for those tiers. Agent frontmatter is unaffected: all
184 agents already declare model as opus/sonnet/haiku/inherit, so the
new Opus version picks up automatically with no file changes.
2026-04-16 13:18:45 -04:00
Seth Hobson 0041fc7194 ci: add plugin eval reporting workflow with per-plugin scores
Adds a GitHub Action that runs the full plugin-eval engine across every
local plugin and emits a structured report for review — not a PR gate.

- scripts/eval_all.py batch-runs EvalEngine.evaluate_plugin across
  plugins/*/, writing per-plugin JSON plus summary.md and summary.json
- Report surfaces composite score, 95% CI, badge, confidence label,
  anti-pattern flags, and three weakest dimensions per plugin
- Separate "Issues requiring attention" section for plugins scoring
  under 60 or with anti-pattern flags raised
- Workflow triggers: workflow_dispatch (choose depth + optional
  comma-separated plugin filter) and weekly cron (Mondays 06:00 UTC)
- Depth quick = static only (no credentials); standard/deep require
  ANTHROPIC_API_KEY repo secret for LLM judge / Monte Carlo layers
- Posts summary.md to the job summary, uploads full eval-reports/
  directory as an artifact for 30 days

Smoke-tested locally: 77 plugins evaluated at quick depth in < 5s,
mean 83.1/100, 2 plugins flagged (incident-response with
DEAD_CROSS_REF, plugin-eval with ORPHAN_REFERENCE + DEAD_CROSS_REF).
2026-04-16 13:16:47 -04:00
Seth Hobson 6625d1ead4 docs: refresh counts for protect-mcp + qa-orchestra; add CI validation
- Counts now reflect 79 plugins (77 local + 2 external via git-subdir),
  184 agents, 150 skills, 98 commands across 25 categories
- README/docs: add Governance category (protect-mcp), bump Testing to 2
  (adds qa-orchestra), expand Security table to include reverse-engineering
  and block-no-verify, add Protect MCP skills section, surface pensyve in
  AI & ML
- marketplace.json: bump metadata to 1.6.0, bump pensyve to 1.2.0
- Add .github/workflows/validate.yml to gate PRs on:
  - marketplace.json + every plugin.json + hooks.json parse as JSON
  - every ./plugins/<name> source resolves on disk with a plugin.json
  - plugin-eval pytest suite (would have caught the #482 sdk.stream bug class)
2026-04-16 13:10:31 -04:00
Seth Hobson 2e04a96e6f Merge pull request #484 from tomjwxf/feat/protect-mcp-plugin
feat: add protect-mcp plugin — Cedar policies + signed receipts (closes #471)
2026-04-16 13:00:33 -04:00
tommylauren e88aa6fb91 Move protect-mcp to new 'governance' category; add discovery keywords
Per review feedback on #484: introducing a new governance category for
better discoverability. This is the first governance-focused plugin in
the marketplace; existing low-count categories (testing, payments,
gaming, finance, blockchain, accessibility) show that niche categories
are acceptable once they have a clear inhabitant.

Also adds a keywords array for searchability.

No changes to plugin contents — this is a marketplace-entry-only update.
2026-04-16 12:58:55 -04:00
tommylauren d3f25db226 feat: add protect-mcp plugin for Cedar policy enforcement + signed receipts
Addresses #471. Adds the first cryptographic governance plugin to the
marketplace: every Claude Code tool call is evaluated against a Cedar
policy before running, and every decision produces an Ed25519-signed
receipt that anyone can verify offline.

Contents of plugins/protect-mcp/:
- skills/protect-mcp-setup/SKILL.md — full setup + hook config guide
- agents/policy-enforcer.md — Cedar policy author (opus) with example
  policies for research, development, and production contexts
- agents/receipt-verifier.md — verifier/chain expert (sonnet) that
  diagnoses signature mismatches, chain breaks, and malformed receipts
- commands/verify-receipt.md — /verify-receipt <path>
- commands/audit-chain.md — /audit-chain [--last N]
- hooks/hooks.json — PreToolUse (Cedar evaluate) + PostToolUse (sign)
- README.md + plugin.json

The plugin depends on two published npm packages:
- protect-mcp (10K+ monthly downloads) — the hooks runtime
- @veritasacta/verify — offline receipt verification CLI

Receipts follow IETF draft-farley-acta-signed-receipts, use RFC 8032
Ed25519 signatures, and RFC 8785 JCS canonicalization. Cedar is AWS's
formally-verified authorization engine (the WASM bindings were
upstreamed in cedar-policy/cedar-for-agents#64).

Marketplace entry added under category "security". Category
"governance" does not exist in the marketplace today; happy to propose
one in a follow-up if the maintainer prefers.
2026-04-16 12:58:55 -04:00