78 lines
2.9 KiB
Bash
Executable File
78 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# install.sh — Knowledge Curator plugin installer
|
|
#
|
|
# ./install.sh local
|
|
# Copy components straight into ~/.claude/ (skills, agents, commands).
|
|
# Quick path, no marketplace. Restart Claude Code afterwards.
|
|
#
|
|
# ./install.sh marketplace /path/to/your/marketplace-repo
|
|
# Copy the plugin into an existing marketplace repo and add/replace its
|
|
# entry in <repo>/.claude-plugin/marketplace.json (needs jq). Prints the
|
|
# git + /plugin commands to finish. Does NOT push for you.
|
|
#
|
|
set -euo pipefail
|
|
|
|
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PLUGIN_DIR="$HERE/knowledge-curator"
|
|
ENTRY_FILE="$HERE/marketplace-entry.json"
|
|
MODE="${1:-}"
|
|
|
|
die() { echo "ERROR: $*" >&2; exit 1; }
|
|
[ -d "$PLUGIN_DIR" ] || die "plugin dir not found: $PLUGIN_DIR"
|
|
|
|
case "$MODE" in
|
|
local)
|
|
DEST="${CLAUDE_HOME:-$HOME/.claude}"
|
|
echo ">> Local install into $DEST"
|
|
mkdir -p "$DEST/skills" "$DEST/agents" "$DEST/commands"
|
|
cp -r "$PLUGIN_DIR/skills/." "$DEST/skills/"
|
|
cp -r "$PLUGIN_DIR/agents/." "$DEST/agents/"
|
|
cp -r "$PLUGIN_DIR/commands/." "$DEST/commands/"
|
|
echo ">> Done. Installed:"
|
|
echo " skill: knowledge-curator"
|
|
echo " agents: kg-graph-auditor, kg-entity-deduplicator, kg-relation-miner, kg-taxonomy-architect"
|
|
echo " commands: /kg-curate, /kg-apply"
|
|
echo ">> Restart Claude Code (or /reload-plugins) so agents & commands load."
|
|
echo ">> Verify your MCP tool names in agents/*.md if your server isn't named 'memory'."
|
|
;;
|
|
|
|
marketplace)
|
|
REPO="${2:-}"
|
|
[ -n "$REPO" ] || die "usage: ./install.sh marketplace /path/to/marketplace-repo"
|
|
[ -d "$REPO" ] || die "marketplace repo not found: $REPO"
|
|
command -v jq >/dev/null 2>&1 || die "jq is required for marketplace mode (install jq or edit marketplace.json by hand)"
|
|
|
|
echo ">> Copying plugin into $REPO/knowledge-curator"
|
|
rm -rf "$REPO/knowledge-curator"
|
|
cp -r "$PLUGIN_DIR" "$REPO/knowledge-curator"
|
|
|
|
MP="$REPO/.claude-plugin/marketplace.json"
|
|
mkdir -p "$REPO/.claude-plugin"
|
|
ENTRY="$(cat "$ENTRY_FILE")"
|
|
|
|
if [ -f "$MP" ]; then
|
|
echo ">> Updating existing marketplace.json"
|
|
tmp="$(mktemp)"
|
|
jq --argjson e "$ENTRY" \
|
|
'.plugins = ((.plugins // []) | map(select(.name != $e.name)) + [$e])' \
|
|
"$MP" > "$tmp" && mv "$tmp" "$MP"
|
|
else
|
|
echo ">> Creating new marketplace.json"
|
|
jq -n --argjson e "$ENTRY" \
|
|
'{name:"luki-net", owner:{name:"l.kirchner", url:"https://gitea.luki-net.org/l.kirchner"}, plugins:[$e]}' \
|
|
> "$MP"
|
|
fi
|
|
|
|
echo ">> Done. Next steps:"
|
|
echo " cd $REPO && git add -A && git commit -m 'add knowledge-curator plugin' && git push"
|
|
echo " # then in Claude Code:"
|
|
echo " /plugin marketplace add https://gitea.luki-net.org/l.kirchner/claude-marketplace"
|
|
echo " /plugin install knowledge-curator@luki-net"
|
|
;;
|
|
|
|
*)
|
|
sed -n '2,16p' "$0"
|
|
exit 1
|
|
;;
|
|
esac
|