Files
holocron/plugins/git
Defame1297 c96ca9ca0d fix: remove the obsidian MCP server and the unreadable .mcp.json files
718c79a deleted every per-plugin .claude-plugin/plugin.json, which
reclassified each package from a marketplace plugin to a plain apm
package. That silently broke MCP propagation: apm_cli/deps/plugin_parser.py
maps a plugin-root .mcp.json into .apm/.mcp.json, and that code path runs
only for marketplace plugins. With no manifest, apm never reads the file.

Reproduced on ref-pinned consumer clones: at the parent commit a consumer
receives the obsidian server, at HEAD it receives none, and on upgrade apm
prints "Removed stale MCP server 'obsidian' from .mcp.json". This repo
consumes its own plugins through apm (ADR-0018), so the tracked root
.mcp.json would have been rewritten to an empty server map on the next
lock re-resolve -- silent tool loss plus unexplained working-tree drift.

The server is removed entirely rather than relocated to .apm/. It was
already a standing question (SIMPLIFICATION-AUDIT finding 37, deferred on
2026-09-13 pending confirmation, now confirmed), and plugins/bin/apm.yml
declares dependencies.mcp: [] -- apm's supported mechanism was never used.
All seven .mcp.json files go; the root one is apm-generated output and is
now gitignored alongside the other install artifacts.

ADR-0011's deferred ".mcp.json wiring gap" is moot twice over -- the
install route it blocked no longer exists and neither does the file --
and ADR-0018 records why it lost its only worked example of MCP
propagation. apm.lock.yaml still carries the server; it clears on the
first apm update after this reaches the default branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YR2CjVumUbEGWcMikcoXBD
2026-09-14 18:09:17 +00:00
..

git

Skills and agents for working with a local Git clone over the git wire protocol, and for authoring and running the pre-commit hooks that guard it.

Install

apm is the only supported install path (ADR-0024). Declare this package in the consuming project's apm.yml:

dependencies:
  apm:
    - git: git@git.dev.rkdr.net:Defame1297/holocron.git
      path: plugins/git

Then:

apm install

The entry above is unpinned and tracks the remote's default branch — add ref: <tag> to pin a release. Registering the catalogue instead (apm marketplace add git@git.dev.rkdr.net:Defame1297/holocron.git --name holocron) gets you the git@holocron short name, but writes to ~/.apm/marketplaces.json at user scope; the git+path object needs nothing beyond the manifest.

Native plugin installs do not work. This package ships no per-plugin manifest and no flat content directories, so a host that installs it natively gets zero skills and zero agents — and Claude Code raises no error while doing it (ADR-0024).

Conventions

Skills here run local git commands through the org's rtk wrapper. When a command is prefixed, when it stays bare, and why some executable commands must stay bare are all decided by ADR-0023 (docs/adr/0023-rtk-prefix-marks-executable-commands-only.md), which is repo-wide and not specific to this plugin. check-rtk-prefix enforces the part of it that is machine-decidable.

Installing this plugin without rtk? Every prefixed command is a plain git invocation with a word in front of it — drop the rtk and it is correct.

Contents

Component Path Description
Skills .apm/skills/ git-commits, git-branches, git-history, git-remotes, git-submodules, git-workflow, git-worktrees, pc-author, pc-run
Agents .apm/agents/ git-orchestrate

.apm/ is the authoring source and the only thing apm deploys (ADR-0024).

Author

Defame1297