Skip to content

Plugin install

The Claude Code plugin is the lowest-friction path to running vibecodingisold. Two commands to install, three commands to use.


Prerequisites

  • Claude Code installed. The plugin is for Claude Code specifically — for other tools, see the integrations under integrations/ (Cursor, Cline, Aider, plain-prompt). See Quick Start for the alternatives.
  • A project with Stage 1 evidence. A PROJECT.md, README.md, or .planning/PROJECT.md in your project root with at least mission, target users, and stack named. The plugin refuses to run without it. See Where it sits in your pipeline.

Install

Two commands:

/plugin marketplace add 0zoriginals/vibecodingisold
/plugin install vibecodingisold@vibecodingisold

The first command registers vibecodingisold as a marketplace source. The second installs the plugin from that marketplace.

Why vibecodingisold@vibecodingisold (the plugin name twice)? Marketplace URI convention: <plugin>@<marketplace>. The marketplace and the plugin happen to share a name in this repo because the marketplace publishes only one plugin.


Verify the install

After install, run the smoke test from inside the repo (or from a fresh clone):

Windows / PowerShell:

plugins/vibecodingisold/scripts/smoke-test.ps1

POSIX (Linux / macOS):

plugins/vibecodingisold/scripts/smoke-test.sh

The smoke test verifies (file-existence + grep-only — fast, no JSON-parse, no command-registry probing):

  1. .claude-plugin/plugin.json exists.
  2. The 4 skill files exist (SKILL.md + 3 templates under skills/vibecodingisold/templates/).
  3. The 3 command markdown files exist (commands/init.md, audit.md, profile.md).
  4. The vendored core/ files exist (7 role files + 6 profile files + PLAN-REQUIREMENTS.template.md + anti-patterns.md + 3 cross-reference files).
  5. The single agent file exists (agents/vibecodingisold-auditor.md).
  6. The single hook file exists (hooks/pre-plan-phase.md).
  7. core/_conflict-resolutions.md contains the 6 contract anchor strings (Idempotency, Liveness, terminationGracePeriodSeconds, Webhook timestamp, secret rotation, RPO) — case-insensitive grep, sanity check only.

Expected output: 0 errors, 0 warnings. If you see anything else, see Troubleshooting below.

Strictness note: byte-identity of vendored core/ against repo-root core/ is not part of the smoke test — it is enforced separately by validate-plugin-sync.py in CI. Slash-command-registration with the running Claude Code instance is also out of scope (the smoke test runs without a CC process).


What the plugin contains

plugins/vibecodingisold/
├── agents/
│   └── vibecodingisold-auditor.md   # Subagent for audit-as-second-opinion runs
├── commands/
│   ├── init.md        # /vibecodingisold:init  — write PLAN-REQUIREMENTS.md
│   ├── audit.md       # /vibecodingisold:audit — gap-report on existing plan
│   └── profile.md     # /vibecodingisold:profile — diagnostic, no writes
├── core/              # vendored canonical knowledge (read-only — sync via scripts/sync-core.*)
│   ├── roles/
│   ├── profiles/
│   ├── _conflict-resolutions.md
│   ├── _cross-references.md
│   └── PLAN-REQUIREMENTS.template.md
├── hooks/
│   └── pre-plan-phase.md            # Hook stub — not yet wired to a Claude Code event
├── scripts/
│   ├── sync-core.ps1     # Re-vendor core/ from repo-root core/
│   ├── sync-core.sh      # Same, POSIX
│   ├── smoke-test.ps1    # Verify install integrity
│   └── smoke-test.sh     # Same, POSIX
└── skills/
    └── vibecodingisold/
        ├── SKILL.md
        └── templates/
            ├── init-output.template.md
            ├── profile-detection.template.md
            └── handoff-message.template.md

The vendored core/ is the keystone choice. The plugin is fully self-contained — no network, no live fetch, no hidden cache. The trade-off is that the plugin can drift from canonical core/. The sync-core.* scripts re-vendor; CI catches drift via validate-plugin-sync.py.


Update / re-install

When the maintainer ships a new version (watch the Changelog):

/plugin uninstall vibecodingisold@vibecodingisold
/plugin install vibecodingisold@vibecodingisold

The marketplace add step is sticky — you don't need to re-add the marketplace after the first install.


Uninstall

/plugin uninstall vibecodingisold@vibecodingisold

Optionally remove the marketplace if you don't plan to reinstall:

/plugin marketplace remove 0zoriginals/vibecodingisold

Generated PLAN-REQUIREMENTS.md files in your projects are not removed by uninstall — they're checked-in artifacts you own.


Troubleshooting

Smoke test fails with "vendored core/ drift"

Cause: someone (you, a contributor) edited plugins/vibecodingisold/core/* directly instead of editing core/* and re-running sync-core.

Fix: plugins/vibecodingisold/scripts/sync-core.ps1 (Windows) or .sh (POSIX). Then re-run the smoke test.

/vibecodingisold:init refuses with "Stage 1 evidence missing"

Cause: no PROJECT.md, README.md, or .planning/PROJECT.md in the project root with the required minimum (mission, users, stack).

Fix: write one. The plugin doesn't generate Stage-1 evidence — that's product work. See Where it sits in your pipeline for the minimum acceptable Stage-1 content.

/vibecodingisold:profile returns "ambiguous, falling through to interactive"

Cause: your Stage-1 doc doesn't contain enough signal for confident auto-resolution.

Fix: either (a) answer the 5 questions interactively, or (b) pass --profile <type> explicitly to init, or © flesh out your Stage-1 doc to include scale band, multi-tenancy posture, and compliance vectors.

Plugin install fails with "marketplace not found"

Cause: typo in the marketplace handle, or your Claude Code version doesn't support the marketplace API yet.

Fix: confirm the handle is exactly 0zoriginals/vibecodingisold. If your CC version is too old, update Claude Code. The plugin requires the marketplace API (shipped in CC late 2025).

"Permission denied" on the smoke test on POSIX

chmod +x plugins/vibecodingisold/scripts/smoke-test.sh
chmod +x plugins/vibecodingisold/scripts/sync-core.sh

These are versioned without execute bit on some checkouts.

Wrong profile resolved by init

Cause: an early signal dominated auto-resolution before the full Stage-1 doc was read.

Fix: pass --profile <type> explicitly to init. Or run /vibecodingisold:profile --explain to see which signals fired and challenge them.


Skills-only fallback (legacy)

If you don't want the plugin and prefer the standalone skill from integrations/claude-code-skill/:

ln -s /path/to/vibecodingisold/integrations/claude-code-skill ~/.claude/skills/vibecodingisold

Then /skill vibecodingisold in any Claude Code session. The skill works but lacks the slash-command surface and the smoke test. Use the plugin if you can.