Plugin commands¶
The plugin exposes three slash commands. Use init first, audit after the project is underway, profile whenever you want to verify the resolution without generating output.
/vibecodingisold:init¶
Purpose: Generate PLAN-REQUIREMENTS.md in the project root, profile-filtered against the 314-item knowledge base. Run BEFORE any AI planning tool sees the repo.
Arguments: [--profile <type>] [--stack <stack>]
--profile <type>— explicit profile (one ofb2b-saas-web,b2c-saas-web,marketplace,ai-wrapper,mobile-app,internal-tool). Skips auto-resolution.--stack <stack>— override the default stack (TypeScript+Node+Postgres) for code snippets in items. Optional; most projects accept the default.
Total runtime: 2-5 minutes (depends on whether profile is auto-detected or asked).
Pre-flight (mandatory):
- Stage 1 evidence required. A
PROJECT.md,README.md, or.planning/PROJECT.mdMUST exist in the project root with at least Mission, Target users, and Stack. If missing, the command refuses with a STOP message. - Profile must resolve. Either passed as
--profile, auto-detected from project context, or interactively asked via the 5-question profile-detection flow. Refuses to write with an ambiguous profile. - No existing
PLAN-REQUIREMENTS.mdoverwrite, full stop. If the file exists, the command refuses to write and points at/vibecodingisold:auditinstead. There is no overwrite flag in V1.0 — the user must rename or delete the existing file by hand if they really want a regeneration. Design rationale: silent overwrites of planning artifacts caused unrecoverable churn during methodology development.
Steps it executes:
- Invokes the
vibecodingisoldskill at${CLAUDE_PLUGIN_ROOT}/skills/vibecodingisold/SKILL.md. - Reads project context.
- Resolves profile (passed arg → context-inferred → interactive 5-question fallback).
- Reads
core/profiles/<resolved-profile>.mdfor the filtered Mandatory list. - Reads
core/_conflict-resolutions.mdfor the 8 Numerical Contracts (BINDING — copies verbatim). - Generates
PLAN-REQUIREMENTS.mdusing the init-output template. - Prints the handoff message (next-step command for your planning tool).
Quality gates after generation:
- Output file exists at
<project-root>/PLAN-REQUIREMENTS.md. - Frontmatter contains all 10 Context Profile fields (no unfilled
${VAR}placeholders). - All Numerical Contracts present and verbatim from
core/_conflict-resolutions.md. - Profile-filtered Mandatory items count matches the count documented in
core/profiles/<profile>.mdheader. - Cross-references to
core/roles/<role>.mduse plugin-relative paths.
If any check fails, init re-runs once with stricter prompting. If still failing: hard-fail with clear log entry — no silent proceed.
Anti-patterns the command refuses:
- Generating without Stage 1 evidence (refuses, prints STOP).
- Inferring profile from a single signal (ambiguous → asks 5 questions).
- Modifying Numerical Contracts (binding across all 7 roles, must align verbatim).
- Silently overwriting existing
PLAN-REQUIREMENTS.md(confirms or suggests audit). - Dropping Conditional items (lists them with their trigger condition).
/vibecodingisold:audit¶
Purpose: Diff an existing PLAN.md or PLAN-REQUIREMENTS.md against the profile-filtered Mandatory list. Outputs a gap report. Does NOT overwrite the existing file. Designed for projects already underway that want to validate spec coverage before the next milestone.
Arguments: [--profile <type>] [--target <path>]
--profile <type>— same options asinit.--target <path>— override the auto-detected target. Default search order:PLAN-REQUIREMENTS.md,PLAN.md,.planning/PLAN.md,docs/PLAN.md.
Total runtime: 2-5 minutes.
Output: PLAN-REQUIREMENTS.audit.md in the project root with this structure:
# vibecodingisold Audit — <project-name>
Profile: <profile>
Target file: <path>
Audited: <ISO-date>
## Coverage summary
- Total Mandatory items in profile: NNN
- Present and aligned: NNN
- Present but misaligned: NNN ← REVIEW
- Missing: NNN ← BLOCKERS
- Deferred with trigger: NNN
## Numerical Contracts compliance
| Contract | Canonical | In plan | Status |
|---|---|---|---|
... 8 rows ...
## Misaligned items (review needed)
... item ID | role | canonical value | plan value | impact ...
## Missing items (blockers before next milestone)
... grouped by role, ordered by retrofit cost (high → low) ...
## Deferred items (acceptable if trigger documented)
... list with trigger condition ...
Per-item classification:
- Present and aligned — item appears in plan with consistent values.
- Present but misaligned — item appears but contradicts canonical (e.g., webhook tolerance set to 600s instead of 300s).
- Missing — item not addressed in plan.
- Out-of-scope deferral — item explicitly deferred with documented trigger condition.
Quality gates:
- Output file
PLAN-REQUIREMENTS.audit.mdexists in project root. - All 8 Numerical Contracts present in the compliance table.
- Misaligned and Missing sections each cite the canonical source file (
core/roles/<role>.mdItem N). - No silent overwrites — verify target file mtime is unchanged after audit.
Anti-patterns the command refuses:
- Overwriting the target file under any circumstances. Audit is read-only on the source plan.
- Reporting "all good" if Numerical Contracts are misaligned — they are binding.
- Classifying Missing items as "low priority" without checking the role file's "Estimated time to retrofit" field.
/vibecodingisold:profile¶
Purpose: Resolve which project profile fits this repo. No file output — just prints the resolved profile, the trigger evidence, and the next-step command.
Arguments: [--explain]
--explain— also print the path to the canonical profile file (core/profiles/<profile>.md) so you can read the full Mandatory list without writing the artifact yet.
Total runtime: 1-2 minutes.
When to use:
- The user wants to confirm which profile applies before committing to
init. - The user is debugging a
PLAN-REQUIREMENTS.mdthey suspect was generated against the wrong profile.
Steps it executes:
- Reads project context (
PROJECT.md,README.md,.planning/PROJECT.md). - Tries to auto-resolve a profile from the context. Tracks which signals fired (e.g., "B2B" keyword, "Postgres" stack, "EU customers" → GDPR, "mobile" mentioned, "internal" mentioned).
- If auto-resolve produces a single confident match: prints it with the trigger evidence.
- If ambiguous or no match: walks through the 5-question profile-detection flow interactively.
- Prints the resolved profile, mandatory item count, and the
initcommand to run next.
Output format (no file written):
Profile resolution for <project-name>
─────────────────────────────────────
Resolved profile: <profile>
Confidence: <auto | interactive>
Mandatory items in scope: NNN
Conditional items active: NN
Conditional items deferred: NN
Triggering signals:
- <signal 1>: <evidence>
- <signal 2>: <evidence>
...
Next step:
/vibecodingisold:init --profile <profile>
Anti-patterns the command refuses:
- Writing any file. This command is diagnostic only.
- Printing profile choice without listing triggering signals — the user needs to be able to challenge the resolution.
- Auto-resolving with low confidence. Ambiguous → falls through to interactive.
Choosing between commands¶
| Situation | Command |
|---|---|
| New project, ready to generate the artifact | init |
| Existing project with a plan, want to check coverage | audit |
| Want to verify the profile choice before generating | profile |
| Want to understand which signals dominated resolution | profile --explain |
| Generated artifact looks wrong (wrong items present) | profile to confirm, then init --profile <correct> |
| Major Stage 1 change (compliance vector added, multi-region entered scope) | init again |