name + description + author only. version/license/keywords/homepage
are not present in any working skills-only plugin in the official
catalogue (e.g., frontend-design).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Default (strict:true) merges plugin.json with marketplace overrides;
this is what's needed to auto-discover skills/<name>/SKILL.md inside
the plugin directory. strict:false says "marketplace entry IS the
entire definition" which conflicts with the plugin.json we ship.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per working entries in anthropics/claude-plugins-official, the
plugin-entry inside marketplace.json should include `version`,
`strict: false`, and `author` even when those fields also exist in
the plugin's own plugin.json.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Source-of-truth claude/ now matches the proven shape used by
anthropics/claude-plugins-official and other shipping marketplaces:
claude/.claude-plugin/marketplace.json references ./plugins/fj
claude/plugins/fj/.claude-plugin/plugin.json
claude/plugins/fj/skills/fj/SKILL.md
Previous string-source "./" and structured {source: url} forms both
tripped "source type your Claude Code version does not support."
The relative sub-path form works.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The "./" string form is older schema; modern Claude Code requires the
structured form. Same shape as anthropics/claude-plugins-official
catalogue entries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The plain "." source triggered "This plugin uses a source type your
Claude Code version does not support" on `/plugin install`. Matching
the well-tested shape used by other working marketplaces: "./" root,
strict:false, explicit skills paths.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
A repo with only plugin.json is recognized as a plugin but not as a
marketplace, which is what `/plugin marketplace add` needs. Adding
.claude-plugin/marketplace.json that declares the marketplace
('rasterandstate') and lists fj as its single plugin.
The correct two-step install is now:
/plugin marketplace add rasterandstate/fj-claude-plugin
/plugin install fj@rasterandstate
README.md and claude/README.md updated accordingly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Source of truth for the plugin lives in claude/ inside this repo. A
canonical mirror is at github.com/rasterandstate/fj-claude-plugin.
The skill activates when the user mentions fj, Forgejo, Gitea, or any
forge-side action. SKILL.md documents:
* the auto-detect convention (`-R` optional inside a clone)
* global flags (`--host`, `--debug`, `--no-pager`, `--json-fields`)
* the `--jq` syntax for `fj api`
* common workflows (PR review, issue triage, releases, code search)
* sharp edges (token TTY guard, --body in CI, gh-equivalence gaps)
* links back to docs/{architecture,gh-to-fj,compatibility,jq,troubleshooting}.md
Install in any Claude Code session:
/plugin install rasterandstate/fj-claude-plugin
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>