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
5 changes: 4 additions & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"version": "0.23.0",
"description": "The code context layer for AI coding agents",
"author": {
"name": "GitHits"
"name": "GitHits",
"email": "support@githits.com",
"url": "https://githits.com"
},
"homepage": "https://githits.com",
"repository": "https://github.com/githits-com/githits-cli",
Expand All @@ -23,6 +25,7 @@
"upgrade evidence",
"implementation examples"
],
"displayName": "GitHits",
"icon": "githits-icon.svg",
"privacyPolicyUrl": "https://githits.com/legal/privacy-policy/"
}
6 changes: 6 additions & 0 deletions changes/claude-plugin-publisher-metadata.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"githits": patch
"@githits/mcp": none
---

- **Claude plugin metadata** - Add the GitHits display name, publisher contact email, and publisher website to the generated Claude plugin manifest.
37 changes: 35 additions & 2 deletions docs/implementation/plugin-packaging.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ contents without running npm lifecycle scripts. `prepack` validates committed
outputs instead of creating or deleting them.

The Claude manifest points to the root SVG icon and the public GitHits privacy
policy. The icon is the Pulse monogram avatar from the GitHits product-context
brand assets. Keep both manifest fields in the generator so regenerated manifests
policy. It also declares `displayName: "GitHits"`, the publisher contact
`support@githits.com`, and an author URL derived from the package homepage.
The icon is the Pulse monogram avatar from the GitHits product-context
brand assets. Keep these manifest fields in the generator so regenerated manifests
retain them. The root npm `files` allow-list includes `githits-icon.svg`;
public-package validation checks the packed tarball contains it.

Expand Down Expand Up @@ -180,6 +182,37 @@ must be archived after legacy installation migration is verified.

## Validation

### Claude directory review (2026-09-29)

Keep the existing repository-root submission and release structure. Do not add
a dedicated plugin folder or distribution branch. The hosted GitHits connector
is already live in the directory (publisher-confirmed); this plugin review does
not require another connector submission.

The [Claude plugin reference](https://code.claude.com/docs/en/plugins-reference)
audit found no missing required manifest fields. The current manifest passes
`claude plugin validate .claude-plugin/plugin.json --strict` with Claude Code
2.1.284. Target the manifest explicitly: `claude plugin validate .` selects
the marketplace manifest in this repository.

`skills/` and `.mcp.json` are default discovery locations. Hooks, agents,
commands, LSP servers, and user configuration are optional components; add them
only for an intended product behavior. Root `CLAUDE.md` is not loaded as plugin
context, and `AGENTS.md` is not a documented plugin instruction entrypoint.
Runtime instructions belong in skills. The shared public tree includes the MCP
skill plus CLI code, package, and onboarding skills; the latter require shell
access and are not hosted-MCP-only workflows.

The directory reviews the repository-root payload, including dependency files,
development documentation, and other hosts' assets. The reported lockfile,
unread-asset, and binary-inspection holds require reviewer clearance for the
held version; passing local manifest validation does not clear them. The
[directory checklist](https://claude.com/docs/plugins/pre-submission-checklist)
distinguishes these holds from blocking findings. Keep the existing submission
path and use the portal's validation and review results to assess each version.

### Repository checks

Unit tests cover pure rendering, version parity, canonical skill discovery,
transport selection, stale outputs, symlink targets, and removal of legacy
payloads.
Expand Down
6 changes: 6 additions & 0 deletions scripts/generate-plugin-assets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ describe("plugin asset generation", () => {
JSON.parse(assets.get(".claude-plugin/plugin.json") ?? "{}"),
).toEqual(
expect.objectContaining({
displayName: "GitHits",
author: {
name: "GitHits",
email: "support@githits.com",
url: "https://githits.com",
},
icon: "githits-icon.svg",
privacyPolicyUrl: "https://githits.com/legal/privacy-policy/",
}),
Expand Down
6 changes: 6 additions & 0 deletions scripts/generate-plugin-assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,12 @@ export function renderPluginAssets(
path: ".claude-plugin/plugin.json",
content: json({
...sharedManifest,
displayName: "GitHits",
author: {
...sharedManifest.author,
email: "support@githits.com",
url: inputs.homepage,
},
icon: "githits-icon.svg",
privacyPolicyUrl: "https://githits.com/legal/privacy-policy/",
}),
Expand Down
Loading