Skip to content

fix(plugins): use object form for plugin.json author field#70

Closed
DevamShah wants to merge 1 commit into
GRCEngClub:mainfrom
DevamShah:fix/plugin-manifest-author-object
Closed

fix(plugins): use object form for plugin.json author field#70
DevamShah wants to merge 1 commit into
GRCEngClub:mainfrom
DevamShah:fix/plugin-manifest-author-object

Conversation

@DevamShah

@DevamShah DevamShah commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Six plugin manifests ship with author as a bare string, which the current Claude Code plugin loader rejects. The result: those plugins cannot be installed via claude plugin install.

$ claude plugin install github-inspector@grc-engineering-suite
✘ Failed to install plugin "github-inspector@grc-engineering-suite":
  Plugin … has an invalid manifest file.
  Validation errors: author: Invalid input: expected object, received string

The rest of the marketplace (grc-engineer, soc2, nist-800-53, all framework plugins) already uses the object form { "name": "..." }. This PR normalises the six remaining manifests so they match — and so they install.

Files changed

  • plugins/connectors/aws-inspector/.claude-plugin/plugin.json
  • plugins/connectors/gcp-inspector/.claude-plugin/plugin.json
  • plugins/connectors/github-inspector/.claude-plugin/plugin.json
  • plugins/connectors/okta-inspector/.claude-plugin/plugin.json
  • plugins/fedramp-ssp/.claude-plugin/plugin.json
  • plugins/oscal/.claude-plugin/plugin.json
  • docs/CONTRIBUTING.md — updated the plugin.json example so new connector contributors land on the working schema by default

Diff is one line per file, no formatting changes elsewhere.

Test plan

  • claude plugin install github-inspector@grc-engineering-suite succeeds after patch (verified locally)
  • claude plugin install aws-inspector@grc-engineering-suite succeeds after patch
  • claude plugin install gcp-inspector@grc-engineering-suite succeeds after patch
  • claude plugin install okta-inspector@grc-engineering-suite succeeds after patch
  • claude plugin install oscal@grc-engineering-suite succeeds after patch
  • claude plugin install fedramp-ssp@grc-engineering-suite succeeds after patch
  • All previously-working plugins (grc-engineer, soc2, etc.) still install — they already used the object form

Notes

The Tier-1 connector plugins are critical for the QUICKSTART path — /grc-engineer:gap-assessment needs at least one connector emitting Findings, and right now none of them install on a current Claude Code CLI.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Updated connector scaffold documentation to reflect changes in plugin author metadata structure.
  • Chores

    • Standardized author metadata across all plugins and connectors from string format to structured object format containing a name field.

@DevamShah DevamShah requested a review from a team as a code owner April 26, 2026 11:42
@qodo-code-review

Copy link
Copy Markdown

Review Summary by Qodo

Normalize plugin.json author field to object form across six plugins

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Normalize plugin manifest author field from string to object form
• Fix validation errors preventing six plugins from installation
• Update contributor documentation with correct schema example
• Unblock critical Tier-1 connector plugins for QUICKSTART path
Diagram
flowchart LR
  A["Six plugin manifests<br/>author as string"] -- "Convert to object form" --> B["author: { name: ... }"]
  B -- "Passes validation" --> C["Plugins install successfully"]
  D["docs/CONTRIBUTING.md<br/>example"] -- "Update schema" --> E["Correct template<br/>for contributors"]
Loading

Grey Divider

File Changes

1. plugins/connectors/aws-inspector/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/connectors/aws-inspector/.claude-plugin/plugin.json


2. plugins/connectors/gcp-inspector/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/connectors/gcp-inspector/.claude-plugin/plugin.json


3. plugins/connectors/github-inspector/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/connectors/github-inspector/.claude-plugin/plugin.json


View more (4)
4. plugins/connectors/okta-inspector/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/connectors/okta-inspector/.claude-plugin/plugin.json


5. plugins/fedramp-ssp/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/fedramp-ssp/.claude-plugin/plugin.json


6. plugins/oscal/.claude-plugin/plugin.json 🐞 Bug fix +1/-1

Convert author field to object form

• Convert author field from string to object form
• Change from "GRC Engineering Club Contributors" to `{ "name": "GRC Engineering Club
 Contributors" }`

plugins/oscal/.claude-plugin/plugin.json


7. docs/CONTRIBUTING.md 📝 Documentation +1/-1

Update plugin.json example with correct author schema

• Update plugin.json example template with correct author object schema
• Change from "author": "you <you@example.com>" to `"author": { "name": "you", "email":
 "you@example.com" }`
• Ensures new contributors use valid schema by default

docs/CONTRIBUTING.md


Grey Divider

Qodo Logo

@qodo-code-review

qodo-code-review Bot commented Apr 26, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

@ethanolivertroy

Copy link
Copy Markdown
Collaborator

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Apr 26, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Apr 26, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@DevamShah has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 15 minutes and 28 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 15 minutes and 28 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506762b-9e17-4c67-a33d-780e3d40b81c

📥 Commits

Reviewing files that changed from the base of the PR and between 8967a1d and 9e9f53c.

📒 Files selected for processing (7)
  • docs/CONTRIBUTING.md
  • plugins/connectors/aws-inspector/.claude-plugin/plugin.json
  • plugins/connectors/gcp-inspector/.claude-plugin/plugin.json
  • plugins/connectors/github-inspector/.claude-plugin/plugin.json
  • plugins/connectors/okta-inspector/.claude-plugin/plugin.json
  • plugins/fedramp-ssp/.claude-plugin/plugin.json
  • plugins/oscal/.claude-plugin/plugin.json
📝 Walkthrough

Walkthrough

The author field in plugin manifests is changed from a string to a structured object containing a name property across six plugins. Documentation is updated to reflect the new schema format.

Changes

Cohort / File(s) Summary
Documentation
docs/CONTRIBUTING.md
Updated connector scaffold example to show author field as { name, email } object instead of string.
Plugin Manifests
plugins/connectors/aws-inspector/.claude-plugin/plugin.json, plugins/connectors/gcp-inspector/.claude-plugin/plugin.json, plugins/connectors/github-inspector/.claude-plugin/plugin.json, plugins/connectors/okta-inspector/.claude-plugin/plugin.json, plugins/fedramp-ssp/.claude-plugin/plugin.json, plugins/oscal/.claude-plugin/plugin.json
Converted author field from string to object with name property across all plugin manifests.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 Hop, hop, hooray! The authors now take shape—
From simple strings to structured forms they drape,
Six plugins and a doc all neatly dressed,
In objects clean, each author now feels blessed! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: converting the author field in plugin manifests from a string to an object format, which directly addresses the validation error preventing plugin installation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@DevamShah

DevamShah commented Apr 26, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @ethanolivertroy for kicking off the review — both bots came back clean here:

  • CodeRabbit (post-rerun): "No actionable comments were generated in the recent review. 🎉"
  • Qodo: 0 bugs, 0 rule violations, 0 requirement gaps.

This PR is the small one — just the six author fields normalised from string to object, plus the CONTRIBUTING.md example aligned with the working format. Happy to rebase if anything in main shifts; otherwise nothing more to do on the diff itself.

Once this lands, #71 (the CI guard against this class of bug) becomes a clean fast-follow.

The Claude Code plugin loader rejects manifests where `author` is a
string with `Validation errors: author: Invalid input: expected
object, received string`, which means the affected plugins cannot be
installed via `claude plugin install`.

Six plugins shipped with `author` as a bare string while the rest of
the marketplace already uses the object form. Normalise them to
`{ "name": "..." }` to match the working plugins (e.g.
`grc-engineer`, `soc2`, `nist-800-53`) and unblock installation:

- plugins/connectors/aws-inspector
- plugins/connectors/gcp-inspector
- plugins/connectors/github-inspector
- plugins/connectors/okta-inspector
- plugins/fedramp-ssp
- plugins/oscal

Also update the `plugin.json` example in `docs/CONTRIBUTING.md` so
new connector contributors land on the working schema by default.

Verified locally: all six plugins install successfully after the
patch (`claude plugin install <name>@grc-engineering-suite`).
@DevamShah DevamShah force-pushed the fix/plugin-manifest-author-object branch from db18604 to 9e9f53c Compare April 26, 2026 15:31
@greptile-apps

greptile-apps Bot commented Apr 26, 2026

Copy link
Copy Markdown

Greptile Summary

This PR normalises the author field in six plugin.json manifests from bare strings to the object form { "name": "..." } required by the Claude Code plugin loader, and updates the scaffold example in CONTRIBUTING.md to match. The change is mechanical, one-line-per-file, and consistent with the object form already used by all other plugins in the repository.

Confidence Score: 5/5

Safe to merge — mechanical one-line fix per file with no logic changes and no new risks introduced.

All seven files receive only the targeted schema normalization. Every changed file now matches the object form already validated by the plugin loader and used by all other plugins in the repo. No logic, permissions, or behaviour is altered. No issues found.

No files require special attention.

Important Files Changed

Filename Overview
plugins/connectors/aws-inspector/.claude-plugin/plugin.json Author field converted from bare string to object form { "name": "GRC Engineering Club Contributors" } — correct fix
plugins/connectors/gcp-inspector/.claude-plugin/plugin.json Author field converted from bare string to object form — correct fix
plugins/connectors/github-inspector/.claude-plugin/plugin.json Author field converted from bare string to object form — correct fix
plugins/connectors/okta-inspector/.claude-plugin/plugin.json Author field converted from bare string to object form — correct fix
plugins/fedramp-ssp/.claude-plugin/plugin.json Author field converted from bare string to object form — correct fix
plugins/oscal/.claude-plugin/plugin.json Author field converted from bare string to object form — correct fix
docs/CONTRIBUTING.md Scaffold plugin.json example updated to use object form with both name and email fields — consistent and helpful for new contributors

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[claude plugin install plugin-name] --> B{Validate plugin.json author field}
    B -->|string form - before PR| C[Validation Error: expected object received string]
    B -->|object form - after PR| D[Validation Passes]
    D --> E[Plugin Installed Successfully]

    subgraph Before
        F[author as bare string]
    end

    subgraph After
        G[author as object with name key]
    end

    F --> B
    G --> B
Loading

Reviews (1): Last reviewed commit: "fix(plugins): use object form for plugin..." | Re-trigger Greptile

@ethanolivertroy

Copy link
Copy Markdown
Collaborator

Superseded by #71, which includes the same six author-field fixes (aws/gcp/github/okta-inspector + oscal + fedramp-ssp) plus a new schemas/plugin.schema.json + GitHub Actions workflow that enforces the object-form author going forward. Closing — thanks @DevamShah, your fix landed via the larger PR.

@DevamShah

Copy link
Copy Markdown
Contributor Author

All good — folding it into #71 was the cleaner outcome. Thanks for the close note, @ethanolivertroy. Six author-field fixes shipping alongside the schema that prevents the next regression is a tighter unit than the manifest-only PR would have been on its own.

DevamShah added a commit to DevamShah/custodia that referenced this pull request Apr 27, 2026
Both substantive PRs (GRCEngClub#71 validator, GRCEngClub#72 India DPDPA plugin) are
merged into upstream main. PR GRCEngClub#70 closed-as-superseded (folded into
GRCEngClub#71). README updated to:

- Reflect the merged state of all three contributions, with explicit
  thanks for @ethanolivertroy's maintainer-edit pass that fixed the
  four blockers on GRCEngClub#72 before merge (version baseline, Section 15
  ₹10,000 correction, Section 2(u) paraphrase).
- Acknowledge @AnandSundar's original stub PR GRCEngClub#66 that locked in the
  SCF metadata baseline.
- Recommend the upstream Club marketplace as the primary install path
  now that the work has landed there.
- Preserve the upstream README verbatim as UPSTREAM-README.md.
@DevamShah DevamShah deleted the fix/plugin-manifest-author-object branch April 27, 2026 02:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants