-
Notifications
You must be signed in to change notification settings - Fork 10
refactor(plugins): apply plugin-dev best practices #79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Two-phase approach: - Phase A: Metadata fixes (color, version, matcher, examples) - Phase B: Skill consolidation (11 new skills, simplified commands/agents) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
32 tasks across 2 phases: - Phase A: 14 tasks (metadata fixes) - Phase B: 18 tasks (skill consolidation) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrate 8 legacy commands from .claude/commands/ to commands/: - analyze.md - cross-artifact consistency analysis - checklist.md - requirements quality validation - clarify.md - spec ambiguity detection and resolution - constitution.md - project constitution management - plan.md - implementation planning workflow - specify.md - feature specification creation - tasks.md - task generation from design artifacts - taskstoissues.md - GitHub issue creation from tasks All commands now have proper frontmatter with name, description, and allowed-tools fields. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reduced design.md from 301 to 86 lines (71% reduction) Reduced requirements.md from 294 to 85 lines (71% reduction) Reduced tasks.md from 314 to 94 lines (70% reduction) All three commands now explicitly reference interview-framework skill for the interview loop pattern instead of duplicating the algorithm. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reduce from 538 to 286 lines (47% reduction) - Add skill references: phase-rules, quality-checkpoints - Remove inline POC workflow and quality checkpoint rules - Keep essential identity: E2E validation, no manual tasks Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📝 WalkthroughWalkthroughBumps two plugin versions, adds an automated plugin validation script and CLAUDE.md guidance, augments agent/skill front-matter (colors, examples, versions), introduces many SKILL.md artifacts and branch/commit/workflow skills, standardizes command frontmatter/style, adds hook matcher fields, and adds refactor planning specs and progress docs. Changes
Sequence Diagram(s)sequenceDiagram
participant Runner as Runner (scripts/validate-plugins.sh)
participant FS as File System / Repo
participant Plugin as Plugin Dir (ralph-*/)
participant Hooks as hooks.json
Runner->>FS: enumerate plugin directories
loop per-plugin
Runner->>Plugin: read agent/skill .md files and hooks
Plugin-->>Runner: frontmatter (color, examples, version) / hooks.json
Runner->>Hooks: validate hooks.json matcher fields
Runner->>Plugin: check skills for version, agents for examples/colors, legacy .claude/commands
Plugin-->>Runner: pass/fail per-check
end
Runner->>Runner: aggregate results and print colored summary
Runner-->>FS: exit with 0 if all pass, else exit 1
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- ralph-speckit: 0.4.0 -> 0.5.0 - ralph-specum: 2.10.0 -> 2.11.0 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
plugins/ralph-speckit/commands/cancel.md (1)
2-36:⚠️ Potential issue | 🟠 Majorallowed-tools doesn’t permit the Skill tool referenced in steps.
The command instructs using the Skill tool, but
allowed-toolsomits it—this will fail under tool gating. AddSkill(or change the instruction to a permitted tool). Also fixes the duplicate “loop” wording.🔧 Proposed fix
-allowed-tools: [Read, Bash, Task] +allowed-tools: [Read, Bash, Task, Skill] @@ -1. Stop Ralph Loop loop (if running): +1. Stop Ralph Loop (if running):plugins/ralph-speckit/agents/qa-engineer.md (1)
309-318:⚠️ Potential issue | 🟠 MajorAvoid VERIFICATION_PASS when all verification commands are skipped.
If every command is skipped (e.g., missing executables), this produces a false green without any real verification. Prefer failing so the task is retried or corrected.
🔧 Suggested adjustment
-| All commands SKIP | Output VERIFICATION_PASS (no failures) | +| All commands SKIP | Output VERIFICATION_FAIL (no verification executed) |plugins/ralph-specum/commands/requirements.md (1)
1-85:⚠️ Potential issue | 🟠 MajorBump plugin versions in both
plugin.jsonandmarketplace.json.The command file
requirements.mdwas modified, but the plugin versions were not updated. According to coding guidelines, you must bump the version in BOTHplugins/ralph-specum/.claude-plugin/plugin.jsonand./.claude-plugin/marketplace.json(ralph-specum entry) whenever ANY changes are made to plugin files (commands, agents, hooks, templates, schemas). Update both versions using semantic versioning appropriate to the changes made.
🤖 Fix all issues with AI agents
In `@plugins/ralph-speckit/agents/task-planner.md`:
- Around line 1-21: The agent change requires a patch version bump in both
plugin manifest files: open plugins/ralph-speckit/.claude-plugin/plugin.json and
./.claude-plugin/marketplace.json, locate the "version" field (currently 0.5.0)
and update it to 0.5.1 so both files match, save and commit the two files
alongside the agent change; ensure the same semantic version string is used in
both manifests (plugin.json and marketplace.json).
In `@plugins/ralph-speckit/commands/tasks.md`:
- Around line 96-101: Update the first "CORRECT" example line "- [ ] T001 Create
project structure per implementation plan" so it includes a file path consistent
with the rule and the other examples (e.g., append a path like "in
src/<appropriate_file>.py" or add "in src/<dir>/README.md"); ensure the task ID
"T001" remains and formatting matches the other examples such as "- [ ] T005 [P]
Implement authentication middleware in src/middleware/auth.py".
In `@plugins/ralph-specum/commands/start.md`:
- Around line 147-152: The markdown table containing the keys `problem`,
`constraints`, `success`, and `additionalContext` has pipes with no surrounding
spaces which triggers MD060; update the table so each cell pipe has a single
space on both sides (e.g., "| 1 | What problem... | Required | `problem` |")
including the header and separator rows to satisfy markdownlint spacing rules.
In `@plugins/ralph-specum/skills/intent-classification/SKILL.md`:
- Around line 47-105: Tables in SKILL.md have pipes without spaces which
triggers markdownlint MD060; update each Markdown table (for example the headers
"Keyword | Confidence Boost", "Match Count | Confidence | Action", and "Intent |
Min Questions | Max Questions") to have a single space before and after every
pipe delimiter (e.g., "Keyword | Confidence Boost" -> "Keyword | Confidence
Boost"), and ensure all rows follow the same spacing convention so each pipe is
surrounded by spaces throughout the file.
In `@plugins/ralph-specum/skills/quality-commands/SKILL.md`:
- Around line 74-79: The markdown table in SKILL.md uses compact pipe spacing
that triggers MD060; update the table rows (the block showing File Exists |
Package Manager | Run Prefix around the `pnpm-lock.yaml`, `yarn.lock`,
`bun.lockb`, `package-lock.json` entries) and the second table at lines ~127-133
to use a single space on both sides of each pipe (e.g., " | " between columns)
and align columns consistently so markdownlint MD060 is satisfied; ensure the
header separator row also has matching spacing (the row with dashes and pipes)
to keep the table format valid.
- Line 47: Update the heading "### 3. CI Configs (.github/workflows/*.yml)" to
capitalize GitHub (change "CI Configs" line to "### 3. CI Configs
(GitHub/.github/workflows/*.yml)" or simply "### 3. CI Configs
(.github/workflows/*.yml) — GitHub" as appropriate); locate the heading text
string in SKILL.md and replace the lowercase "GitHub" instance to "GitHub" so
the heading correctly capitalizes the platform name.
In `@plugins/ralph-specum/skills/spec-scanner/SKILL.md`:
- Around line 198-211: The Example 3 matching is incorrect because the "Keywords
extracted" list (the Keywords extracted entry) does not contain "jwt" yet the
"Matching" section claims user-auth has 3 matches including "jwt"; update the
"Matching" section to only count actual overlaps with the extracted keywords
(e.g., set user-auth to 2 matches for "authentication" and "token",
token-refresh to 2, api-auth to 1 or 2 depending on overlaps) or explicitly
state that a stemming/fuzzy match was used and document that behavior;
specifically edit the "Keywords extracted" and "Matching" blocks in Example 3
and adjust the user-auth, token-refresh, and api-auth match counts and
matched-terms to be consistent.
In `@scripts/validate-plugins.sh`:
- Around line 26-34: The arithmetic increments in log_fail and log_warn (the
((errors++)) and ((warnings++)) calls) can cause the script to exit under set -e
because ((errors++)) returns the old value (0) as the exit status; change these
to a safe increment that never yields a zero exit status such as assigning the
incremented value (e.g., errors=$((errors+1)) and warnings=$((warnings+1))) so
log_fail and log_warn update the counters without triggering set -e; update both
functions accordingly.
In `@specs/refactor-plugins/requirements.md`:
- Around line 15-19: The Markdown tables in this file (e.g., the table row
starting with "Primary users | Both developers and end users" and the rows for
"Priority tradeoffs" and "Success criteria") use compact pipe separators that
trigger MD060; update these table rows and any other tables in the file to
include a single space before and after each pipe (e.g., " | ") and ensure
consistent spacing for the header separator line as well so all table pipes have
surrounding spaces throughout the document.
In `@specs/refactor-plugins/tasks.md`:
- Around line 10-511: The spec currently defines five phases (Phase 1..5) but
must follow the repo standard four-phase POC-first workflow; update
specs/refactor-plugins/tasks.md to consolidate the PR lifecycle/PR creation and
monitoring steps (the content under "Phase 5: PR Lifecycle" and the PR steps in
"Phase 4: Quality Gates" / item 4.2) into the Phase 4 "Quality Gates" section or
move them to a Notes/Appendix section, and rename/ensure the top-level headings
match exactly: Phase 1: Make It Work (POC), Phase 2: Refactoring, Phase 3:
Testing, Phase 4: Quality Gates; adjust or remove the separate "Phase 5" heading
and ensure references to PR steps (4.2, 5.1, PR creation/monitoring) are present
only under Phase 4 or an appendix so the document enforces the required 4‑phase
workflow.
- Around line 561-565: The markdown table in specs/refactor-plugins/tasks.md
violates MD060 because the pipe characters in the header and rows lack
consistent spaces; update the three table lines (the header line "| Phase |
Files Changed | Files Created | Files Deleted |" the separator
"|-------|---------------|---------------|---------------|" and each data row "|
Phase A | 32 | 9 | 9 |", "| Phase B | 10 | 11 | 0 |", "| **Total** | **42** |
**20** | **9** |") so that there is a single space before and after each pipe
delimiter (i.e., ensure " | " between columns) to satisfy markdownlint spacing
rules.
🧹 Nitpick comments (4)
plugins/ralph-specum/skills/intent-classification/SKILL.md (1)
76-190: Align examples and tie‑break behavior with the keyword rules.Example 2 lists “new” as a matched keyword, but “new” isn’t present in the GREENFIELD table; also, tie‑break behavior is implicit (TRIVIAL wins on equal scores). Please either add “new” to the table or update the example, and document tie‑break priority explicitly to avoid ambiguity.
Also applies to: 112-133
plugins/ralph-speckit/skills/speckit-workflow/SKILL.md (1)
3-120: Align phase model with the required 4-phase POC-first workflow.
This doc defines a 6‑phase flow, which conflicts with the required 4‑phase model. Consider mapping or reconciling the phases so the skill reflects the mandated workflow.Based on learnings: "All specs must follow the 4-phase POC-first workflow: Phase 1 (Make It Work - POC validation, skip tests), Phase 2 (Refactoring - code cleanup), Phase 3 (Testing - unit, integration, e2e), Phase 4 (Quality Gates - lint, types, CI, PR)".
plugins/ralph-specum/skills/spec-workflow/SKILL.md (1)
3-45: Reconcile phase naming with the 4‑phase POC‑first workflow.
Current phase labels don’t align with the mandated 4‑phase model; consider adding a mapping or updating the phase flow to match.Based on learnings: "All specs must follow the 4-phase POC-first workflow: Phase 1 (Make It Work - POC validation, skip tests), Phase 2 (Refactoring - code cleanup), Phase 3 (Testing - unit, integration, e2e), Phase 4 (Quality Gates - lint, types, CI, PR)".
plugins/ralph-specum/skills/branch-management/SKILL.md (1)
200-209: Consider tightening the default branch protection exception.The mandatory block correctly prohibits direct pushes to the default branch, but Line 208 introduces an exception "if the user explicitly requests pushing to the default branch." This loophole could undermine the protection policy, as users might request it without fully understanding the consequences.
Consider one of these approaches:
- Remove the exception entirely and require feature branches in all cases
- Add additional verification steps (e.g., require confirmation with a warning about team workflow implications)
- Document specific scenarios where direct pushes are acceptable (e.g., hotfixes, single-maintainer repos)
| --- | ||
| name: task-planner | ||
| description: Expert task planner for breaking plans into executable tasks. Masters POC-first workflow, task sequencing, quality gates, and constitution alignment. | ||
| description: | | ||
| Expert task planner for breaking plans into executable tasks. Masters POC-first workflow, task sequencing, quality gates, and constitution alignment. | ||
|
|
||
| <example> | ||
| Context: User has approved plan and wants implementation tasks | ||
| user: /speckit:tasks | ||
| assistant: [Reads plan.md, spec.md, constitution, explores for commands, creates tasks.md with POC-first phases, [P] parallel markers, [VERIFY] checkpoints] | ||
| commentary: Triggered when user wants to break technical plan into executable task list for spec-executor | ||
| </example> | ||
|
|
||
| <example> | ||
| Context: Complex feature needs careful task sequencing | ||
| user: Generate tasks for the payment feature | ||
| assistant: [Creates tasks with Phase 1-5 structure, inserts [VERIFY] every 2-3 tasks, marks parallelizable tasks with [P], includes E2E validation tasks] | ||
| commentary: Triggered when converting technical plans into structured task sequences following POC-first workflow | ||
| </example> | ||
| model: inherit | ||
| color: cyan | ||
| --- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Find and inspect plugin.json for ralph-speckit
echo "=== ralph-speckit plugin.json ==="
find plugins/ralph-speckit -name "plugin.json" -type f | head -5
find plugins/ralph-speckit -name "plugin.json" -type f -exec cat {} \;
echo -e "\n=== marketplace.json search ==="
find . -name "marketplace.json" -type f | head -10
find . -name "marketplace.json" -type f -exec cat {} \; 2>/dev/null | head -100Repository: tzachbon/smart-ralph
Length of output: 1642
🏁 Script executed:
#!/bin/bash
# Check git diff for version changes
echo "=== Git diff for plugin.json ==="
git diff plugins/ralph-speckit/.claude-plugin/plugin.json
echo -e "\n=== Git diff for marketplace.json ==="
git diff ./.claude-plugin/marketplace.jsonRepository: tzachbon/smart-ralph
Length of output: 135
Version bumps required: Plugin.json and marketplace.json were not updated for this agent change.
The agent file plugins/ralph-speckit/agents/task-planner.md was modified, but neither plugins/ralph-speckit/.claude-plugin/plugin.json nor ./.claude-plugin/marketplace.json were updated. Per coding guidelines, you must bump the version in BOTH files whenever making ANY changes to agent files. Consider incrementing from 0.5.0 to 0.5.1 (patch) using semantic versioning unless this is part of a larger feature release.
🤖 Prompt for AI Agents
In `@plugins/ralph-speckit/agents/task-planner.md` around lines 1 - 21, The agent
change requires a patch version bump in both plugin manifest files: open
plugins/ralph-speckit/.claude-plugin/plugin.json and
./.claude-plugin/marketplace.json, locate the "version" field (currently 0.5.0)
and update it to 0.5.1 so both files match, save and commit the two files
alongside the agent change; ensure the same semantic version string is used in
both manifests (plugin.json and marketplace.json).
| ## Phase 1: Make It Work (POC) - Phase A Metadata Fixes | ||
|
|
||
| Focus: Fix all missing frontmatter fields (color, version, matcher, name) and add example blocks to agents. | ||
|
|
||
| ### A1: Agent Metadata | ||
|
|
||
| - [x] 1.1 Add color and examples to ralph-specum agents (8 files) | ||
| - **Do**: | ||
| 1. For each of 8 agents, add `color` field after `model` in frontmatter | ||
| 2. Add 2 `<example>` blocks with Context/user/assistant/commentary format to description | ||
| 3. Colors: research-analyst=blue, product-manager=cyan, architect-reviewer=blue, task-planner=cyan, spec-executor=green, plan-synthesizer=green, qa-engineer=yellow, refactor-specialist=magenta | ||
| - **Files**: | ||
| - `plugins/ralph-specum/agents/research-analyst.md` | ||
| - `plugins/ralph-specum/agents/product-manager.md` | ||
| - `plugins/ralph-specum/agents/architect-reviewer.md` | ||
| - `plugins/ralph-specum/agents/task-planner.md` | ||
| - `plugins/ralph-specum/agents/spec-executor.md` | ||
| - `plugins/ralph-specum/agents/plan-synthesizer.md` | ||
| - `plugins/ralph-specum/agents/qa-engineer.md` | ||
| - `plugins/ralph-specum/agents/refactor-specialist.md` | ||
| - **Done when**: All 8 agents have color field and 2+ example blocks | ||
| - **Verify**: `for f in plugins/ralph-specum/agents/*.md; do grep -q "^color:" "$f" && test $(grep -c "<example>" "$f") -ge 2 || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-specum): add color and examples to all agents` | ||
| - _Requirements: AC-1.1, AC-1.3, AC-1.4, AC-1.5_ | ||
| - _Design: ralph-specum Agents, Agent Color Assignments_ | ||
|
|
||
| - [x] 1.2 Add color and examples to ralph-speckit agents (6 files) | ||
| - **Do**: | ||
| 1. For each of 6 agents, add `color` field after `model` in frontmatter | ||
| 2. Add 2 `<example>` blocks with Context/user/assistant/commentary format to description | ||
| 3. Colors: constitution-architect=magenta, spec-analyst=blue, qa-engineer=yellow, spec-executor=green, plan-architect=cyan, task-planner=cyan | ||
| - **Files**: | ||
| - `plugins/ralph-speckit/agents/constitution-architect.md` | ||
| - `plugins/ralph-speckit/agents/spec-analyst.md` | ||
| - `plugins/ralph-speckit/agents/qa-engineer.md` | ||
| - `plugins/ralph-speckit/agents/spec-executor.md` | ||
| - `plugins/ralph-speckit/agents/plan-architect.md` | ||
| - `plugins/ralph-speckit/agents/task-planner.md` | ||
| - **Done when**: All 6 agents have color field and 2+ example blocks | ||
| - **Verify**: `for f in plugins/ralph-speckit/agents/*.md; do grep -q "^color:" "$f" && test $(grep -c "<example>" "$f") -ge 2 || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-speckit): add color and examples to all agents` | ||
| - _Requirements: AC-1.2, AC-1.3, AC-1.4, AC-1.5_ | ||
| - _Design: ralph-speckit Agents, Agent Color Assignments_ | ||
|
|
||
| - [x] 1.3 [VERIFY] Quality checkpoint: agent metadata | ||
| - **Do**: Verify all 14 agents have color field and 2+ example blocks | ||
| - **Verify**: `count=0; for f in plugins/*/agents/*.md; do grep -q "^color:" "$f" && test $(grep -c "<example>" "$f") -ge 2 || ((count++)); done; test $count -eq 0` | ||
| - **Done when**: All agents pass color and example validation | ||
| - **Commit**: `chore(plugins): pass agent metadata checkpoint` (only if fixes needed) | ||
|
|
||
| ### A2: Skill Metadata | ||
|
|
||
| - [x] 1.4 Add version to ralph-specum skills (6 files) | ||
| - **Do**: | ||
| 1. Add `version: 0.1.0` to frontmatter of each skill | ||
| 2. Fix interview-framework description to third-person format with trigger phrases | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/communication-style/SKILL.md` | ||
| - `plugins/ralph-specum/skills/delegation-principle/SKILL.md` | ||
| - `plugins/ralph-specum/skills/interview-framework/SKILL.md` | ||
| - `plugins/ralph-specum/skills/reality-verification/SKILL.md` | ||
| - `plugins/ralph-specum/skills/smart-ralph/SKILL.md` | ||
| - `plugins/ralph-specum/skills/spec-workflow/SKILL.md` | ||
| - **Done when**: All 6 skills have version field, interview-framework has third-person description | ||
| - **Verify**: `for f in plugins/ralph-specum/skills/*/SKILL.md; do grep -q "^version:" "$f" || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-specum): add version to all skills` | ||
| - _Requirements: AC-2.1, AC-2.5_ | ||
| - _Design: ralph-specum Skills_ | ||
|
|
||
| - [x] 1.5 Add version and fix descriptions for ralph-speckit skills (4 files) | ||
| - **Do**: | ||
| 1. Add `version: 0.1.0` to frontmatter of each skill | ||
| 2. Rewrite all 4 descriptions to third-person format: "This skill should be used when..." | ||
| 3. Include at least 3 trigger phrases in quotes | ||
| - **Files**: | ||
| - `plugins/ralph-speckit/skills/communication-style/SKILL.md` | ||
| - `plugins/ralph-speckit/skills/delegation-principle/SKILL.md` | ||
| - `plugins/ralph-speckit/skills/smart-ralph/SKILL.md` | ||
| - `plugins/ralph-speckit/skills/speckit-workflow/SKILL.md` | ||
| - **Done when**: All 4 skills have version field and third-person descriptions | ||
| - **Verify**: `for f in plugins/ralph-speckit/skills/*/SKILL.md; do grep -q "^version:" "$f" && grep -q "This skill should be used when" "$f" || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-speckit): add version and fix descriptions for all skills` | ||
| - _Requirements: AC-2.2, AC-2.3, AC-2.4_ | ||
| - _Design: ralph-speckit Skills_ | ||
|
|
||
| ### A3: Hook Metadata | ||
|
|
||
| - [x] 1.6 Add matcher field to hooks (2 files) | ||
| - **Do**: | ||
| 1. Add `"matcher": "*"` to Stop entry in ralph-specum hooks.json | ||
| 2. Add `"matcher": "*"` to SessionStart entry in ralph-specum hooks.json | ||
| 3. Add `"matcher": "*"` to Stop entry in ralph-speckit hooks.json | ||
| - **Files**: | ||
| - `plugins/ralph-specum/hooks/hooks.json` | ||
| - `plugins/ralph-speckit/hooks/hooks.json` | ||
| - **Done when**: All hook entries have matcher field | ||
| - **Verify**: `for f in plugins/*/hooks/hooks.json; do grep -q '"matcher"' "$f" || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(plugins): add matcher field to all hook entries` | ||
| - _Requirements: AC-3.1, AC-3.2, AC-3.3_ | ||
| - _Design: Hooks_ | ||
|
|
||
| - [x] 1.7 [VERIFY] Quality checkpoint: skills and hooks | ||
| - **Do**: Verify all skills have version and all hooks have matcher | ||
| - **Verify**: `count=0; for f in plugins/*/skills/*/SKILL.md; do grep -q "^version:" "$f" || ((count++)); done; for f in plugins/*/hooks/hooks.json; do grep -q '"matcher"' "$f" || ((count++)); done; test $count -eq 0` | ||
| - **Done when**: All skills and hooks pass validation | ||
| - **Commit**: `chore(plugins): pass skills/hooks checkpoint` (only if fixes needed) | ||
|
|
||
| ### A4: Command Fixes | ||
|
|
||
| - [x] 1.8 Add name field to ralph-speckit modern commands (5 files) | ||
| - **Do**: | ||
| 1. Add `name: <command>` field to frontmatter of each command | ||
| 2. Names: start, status, switch, cancel, implement | ||
| - **Files**: | ||
| - `plugins/ralph-speckit/commands/start.md` (name: start) | ||
| - `plugins/ralph-speckit/commands/status.md` (name: status) | ||
| - `plugins/ralph-speckit/commands/switch.md` (name: switch) | ||
| - `plugins/ralph-speckit/commands/cancel.md` (name: cancel) | ||
| - `plugins/ralph-speckit/commands/implement.md` (name: implement) | ||
| - **Done when**: All 5 commands have name field in frontmatter | ||
| - **Verify**: `for f in plugins/ralph-speckit/commands/*.md; do grep -q "^name:" "$f" || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-speckit): add name field to modern commands` | ||
| - _Requirements: AC-4.1_ | ||
| - _Design: ralph-speckit Commands_ | ||
|
|
||
| - [x] 1.9 Migrate legacy commands to commands/ directory (8 files) | ||
| - **Do**: | ||
| 1. For each legacy command in `.claude/commands/`: | ||
| - Copy to `plugins/ralph-speckit/commands/` with new name (strip speckit. prefix) | ||
| - Add proper frontmatter: name, description, allowed_tools | ||
| 2. Files to migrate (skip speckit.implement.md - duplicate): | ||
| - speckit.analyze.md -> analyze.md | ||
| - speckit.checklist.md -> checklist.md | ||
| - speckit.clarify.md -> clarify.md | ||
| - speckit.constitution.md -> constitution.md | ||
| - speckit.plan.md -> plan.md | ||
| - speckit.specify.md -> specify.md | ||
| - speckit.tasks.md -> tasks.md | ||
| - speckit.taskstoissues.md -> taskstoissues.md | ||
| - **Files**: | ||
| - `plugins/ralph-speckit/commands/analyze.md` (create) | ||
| - `plugins/ralph-speckit/commands/checklist.md` (create) | ||
| - `plugins/ralph-speckit/commands/clarify.md` (create) | ||
| - `plugins/ralph-speckit/commands/constitution.md` (create) | ||
| - `plugins/ralph-speckit/commands/plan.md` (create) | ||
| - `plugins/ralph-speckit/commands/specify.md` (create) | ||
| - `plugins/ralph-speckit/commands/tasks.md` (create) | ||
| - `plugins/ralph-speckit/commands/taskstoissues.md` (create) | ||
| - **Done when**: All 8 commands exist in commands/ with proper frontmatter | ||
| - **Verify**: `for cmd in analyze checklist clarify constitution plan specify tasks taskstoissues; do test -f "plugins/ralph-speckit/commands/$cmd.md" && grep -q "^name:" "plugins/ralph-speckit/commands/$cmd.md" || echo "FAIL: $cmd"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `feat(ralph-speckit): migrate legacy commands to commands/` | ||
| - _Requirements: AC-4.2, AC-4.5_ | ||
| - _Design: Legacy commands migration_ | ||
|
|
||
| - [x] 1.10 Remove legacy commands directory | ||
| - **Do**: | ||
| 1. Verify all commands migrated successfully (from 1.9) | ||
| 2. Delete `.claude/commands/` directory from ralph-speckit | ||
| 3. This removes duplicate speckit.implement.md | ||
| - **Files**: | ||
| - `plugins/ralph-speckit/.claude/commands/` (delete entire directory) | ||
| - **Done when**: Legacy directory no longer exists | ||
| - **Verify**: `test ! -d "plugins/ralph-speckit/.claude/commands"` | ||
| - **Commit**: `chore(ralph-speckit): remove legacy commands directory` | ||
| - _Requirements: AC-4.3, AC-4.4_ | ||
| - _Design: Post-migration cleanup_ | ||
|
|
||
| - [x] 1.11 [VERIFY] Quality checkpoint: commands | ||
| - **Do**: Verify all ralph-speckit commands have name field and legacy dir removed | ||
| - **Verify**: `count=0; for f in plugins/ralph-speckit/commands/*.md; do grep -q "^name:" "$f" || ((count++)); done; test ! -d "plugins/ralph-speckit/.claude/commands" || ((count++)); test $count -eq 0` | ||
| - **Done when**: All commands valid, legacy directory removed | ||
| - **Commit**: `chore(ralph-speckit): pass commands checkpoint` (only if fixes needed) | ||
|
|
||
| ### A5: Validation and Documentation | ||
|
|
||
| - [x] 1.12 Create validation script | ||
| - **Do**: | ||
| 1. Create `scripts/validate-plugins.sh` with compliance checks: | ||
| - Agents have color field | ||
| - Agents have 2+ example blocks | ||
| - Skills have version field | ||
| - Hooks have matcher field | ||
| - No legacy commands directory | ||
| 2. Script exits 0 on pass, non-zero on failure | ||
| 3. Make script executable | ||
| - **Files**: | ||
| - `scripts/validate-plugins.sh` (create) | ||
| - **Done when**: Script runs and validates all checks | ||
| - **Verify**: `test -x scripts/validate-plugins.sh && bash scripts/validate-plugins.sh` | ||
| - **Commit**: `feat(scripts): add plugin compliance validation script` | ||
| - _Requirements: AC-5.1, AC-5.2, AC-5.3, AC-5.4_ | ||
| - _Design: Validation Script Design_ | ||
|
|
||
| - [x] 1.13 Update CLAUDE.md with best practices | ||
| - **Do**: | ||
| 1. Add section referencing plugin-dev skills for best practices | ||
| 2. Include validation script usage | ||
| 3. Document color conventions for agents | ||
| - **Files**: | ||
| - `CLAUDE.md` (edit) | ||
| - **Done when**: CLAUDE.md has plugin best practices reference | ||
| - **Verify**: `grep -q "validate-plugins" CLAUDE.md && grep -q "plugin-dev" CLAUDE.md` | ||
| - **Commit**: `docs: add plugin best practices reference to CLAUDE.md` | ||
| - _Requirements: AC-5.5_ | ||
| - _Design: Documentation_ | ||
|
|
||
| - [x] 1.14 [VERIFY] Phase A complete validation | ||
| - **Do**: Run full validation script to verify all Phase A changes | ||
| - **Verify**: `bash scripts/validate-plugins.sh && echo "Phase A PASS"` | ||
| - **Done when**: Validation script passes with 0 errors | ||
| - **Commit**: `chore(plugins): pass Phase A validation` (only if fixes needed) | ||
|
|
||
| --- | ||
|
|
||
| ## Phase 2: Refactoring - Phase B Skill Consolidation | ||
|
|
||
| Focus: Extract procedural logic from commands/agents into reusable skills, then simplify sources. | ||
|
|
||
| ### B1: Create New Skills | ||
|
|
||
| - [x] 2.1 Create failure-recovery skill | ||
| - **Do**: | ||
| 1. Extract recovery orchestration logic from implement.md sections 6b-6d | ||
| 2. Create skill with proper frontmatter (name, description, version) | ||
| 3. Document recovery loop pattern, fix task generation, recovery state management | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/failure-recovery/SKILL.md` (create) | ||
| - **Done when**: Skill contains full recovery pattern, ~300-400 lines | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/failure-recovery/SKILL.md && grep -q "^version:" plugins/ralph-specum/skills/failure-recovery/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add failure-recovery skill` | ||
| - _Design: New Skills - failure-recovery_ | ||
|
|
||
| - [x] 2.2 Create verification-layers skill | ||
| - **Do**: | ||
| 1. Extract 4-layer verification pattern from implement.md section 7 | ||
| 2. Document: contradiction check, uncommitted changes, checkmark verification, completion signal | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/verification-layers/SKILL.md` (create) | ||
| - **Done when**: Skill contains all 4 verification layers | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/verification-layers/SKILL.md && grep -q "contradiction" plugins/ralph-specum/skills/verification-layers/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add verification-layers skill` | ||
| - _Design: New Skills - verification-layers_ | ||
|
|
||
| - [x] 2.3 Create coordinator-pattern skill | ||
| - **Do**: | ||
| 1. Extract coordinator prompt pattern from implement.md | ||
| 2. Document role definition, state reading, task delegation, completion signaling | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/coordinator-pattern/SKILL.md` (create) | ||
| - **Done when**: Skill contains coordinator delegation pattern | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/coordinator-pattern/SKILL.md && grep -q "COORDINATOR" plugins/ralph-specum/skills/coordinator-pattern/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add coordinator-pattern skill` | ||
| - _Design: New Skills - coordinator-pattern_ | ||
|
|
||
| - [x] 2.4 [VERIFY] Quality checkpoint: new skills batch 1 | ||
| - **Do**: Verify first 3 new skills have proper structure | ||
| - **Verify**: `count=0; for s in failure-recovery verification-layers coordinator-pattern; do test -f "plugins/ralph-specum/skills/$s/SKILL.md" && grep -q "^version:" "plugins/ralph-specum/skills/$s/SKILL.md" || ((count++)); done; test $count -eq 0` | ||
| - **Done when**: All 3 skills exist with version field | ||
| - **Commit**: `chore(ralph-specum): pass new skills batch 1 checkpoint` (only if fixes needed) | ||
|
|
||
| - [x] 2.5 Create branch-management skill | ||
| - **Do**: | ||
| 1. Extract branch management logic from start.md | ||
| 2. Document branch creation, worktree setup, naming conventions, default branch detection | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/branch-management/SKILL.md` (create) | ||
| - **Done when**: Skill contains branch workflow patterns | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/branch-management/SKILL.md && grep -q "branch" plugins/ralph-specum/skills/branch-management/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add branch-management skill` | ||
| - _Design: New Skills - branch-management_ | ||
|
|
||
| - [x] 2.6 Create intent-classification skill | ||
| - **Do**: | ||
| 1. Extract intent classification logic from start.md | ||
| 2. Document goal type detection, keyword matching, question count determination | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/intent-classification/SKILL.md` (create) | ||
| - **Done when**: Skill contains intent detection patterns and keyword tables | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/intent-classification/SKILL.md && grep -q "intent" plugins/ralph-specum/skills/intent-classification/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add intent-classification skill` | ||
| - _Design: New Skills - intent-classification_ | ||
|
|
||
| - [x] 2.7 Create spec-scanner skill | ||
| - **Do**: | ||
| 1. Extract spec discovery logic from start.md | ||
| 2. Document related specs finding, status checking, recommendation logic | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/spec-scanner/SKILL.md` (create) | ||
| - **Done when**: Skill contains spec discovery patterns | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/spec-scanner/SKILL.md && grep -q "spec" plugins/ralph-specum/skills/spec-scanner/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add spec-scanner skill` | ||
| - _Design: New Skills - spec-scanner_ | ||
|
|
||
| - [x] 2.8 Create parallel-research skill | ||
| - **Do**: | ||
| 1. Extract parallel execution pattern from research.md | ||
| 2. Document multi-agent spawning, parallel search, results merge algorithm | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/parallel-research/SKILL.md` (create) | ||
| - **Done when**: Skill contains parallel execution and merge patterns | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/parallel-research/SKILL.md && grep -q "parallel" plugins/ralph-specum/skills/parallel-research/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add parallel-research skill` | ||
| - _Design: New Skills - parallel-research_ | ||
|
|
||
| - [x] 2.9 [VERIFY] Quality checkpoint: new skills batch 2 | ||
| - **Do**: Verify skills 4-7 have proper structure | ||
| - **Verify**: `count=0; for s in branch-management intent-classification spec-scanner parallel-research; do test -f "plugins/ralph-specum/skills/$s/SKILL.md" && grep -q "^version:" "plugins/ralph-specum/skills/$s/SKILL.md" || ((count++)); done; test $count -eq 0` | ||
| - **Done when**: All 4 skills exist with version field | ||
| - **Commit**: `chore(ralph-specum): pass new skills batch 2 checkpoint` (only if fixes needed) | ||
|
|
||
| - [x] 2.10 Create phase-rules skill | ||
| - **Do**: | ||
| 1. Extract phase-specific rules from spec-executor.md | ||
| 2. Document POC/Refactor/Testing/Quality phase behaviors, shortcuts allowed per phase | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/phase-rules/SKILL.md` (create) | ||
| - **Done when**: Skill contains all 4 phase behavior definitions | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/phase-rules/SKILL.md && grep -q "Phase" plugins/ralph-specum/skills/phase-rules/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add phase-rules skill` | ||
| - _Design: New Skills - phase-rules_ | ||
|
|
||
| - [x] 2.11 Create commit-discipline skill | ||
| - **Do**: | ||
| 1. Extract commit rules from spec-executor.md | ||
| 2. Document commit message format, spec file inclusion, commit frequency rules | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/commit-discipline/SKILL.md` (create) | ||
| - **Done when**: Skill contains commit conventions and rules | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/commit-discipline/SKILL.md && grep -q "commit" plugins/ralph-specum/skills/commit-discipline/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add commit-discipline skill` | ||
| - _Design: New Skills - commit-discipline_ | ||
|
|
||
| - [x] 2.12 Create quality-checkpoints skill | ||
| - **Do**: | ||
| 1. Extract [VERIFY] task rules from task-planner.md | ||
| 2. Document checkpoint frequency, format, verification commands | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/quality-checkpoints/SKILL.md` (create) | ||
| - **Done when**: Skill contains checkpoint insertion rules and formats | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/quality-checkpoints/SKILL.md && grep -q "VERIFY" plugins/ralph-specum/skills/quality-checkpoints/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add quality-checkpoints skill` | ||
| - _Design: New Skills - quality-checkpoints_ | ||
|
|
||
| - [x] 2.13 Create quality-commands skill | ||
| - **Do**: | ||
| 1. Extract quality command discovery from research-analyst.md | ||
| 2. Document package.json/Makefile/CI discovery patterns, fallback commands | ||
| - **Files**: | ||
| - `plugins/ralph-specum/skills/quality-commands/SKILL.md` (create) | ||
| - **Done when**: Skill contains command discovery patterns | ||
| - **Verify**: `test -f plugins/ralph-specum/skills/quality-commands/SKILL.md && grep -q "package.json" plugins/ralph-specum/skills/quality-commands/SKILL.md` | ||
| - **Commit**: `feat(ralph-specum): add quality-commands skill` | ||
| - _Design: New Skills - quality-commands_ | ||
|
|
||
| - [x] 2.14 [VERIFY] Quality checkpoint: new skills batch 3 | ||
| - **Do**: Verify skills 8-11 have proper structure | ||
| - **Verify**: `count=0; for s in phase-rules commit-discipline quality-checkpoints quality-commands; do test -f "plugins/ralph-specum/skills/$s/SKILL.md" && grep -q "^version:" "plugins/ralph-specum/skills/$s/SKILL.md" || ((count++)); done; test $count -eq 0` | ||
| - **Done when**: All 4 skills exist with version field | ||
| - **Commit**: `chore(ralph-specum): pass new skills batch 3 checkpoint` (only if fixes needed) | ||
|
|
||
| ### B2: Simplify Commands | ||
|
|
||
| - [x] 2.15 Simplify implement.md command | ||
| - **Do**: | ||
| 1. Replace inline coordinator prompt with skill reference to coordinator-pattern | ||
| 2. Replace inline recovery logic with skill reference to failure-recovery | ||
| 3. Replace inline verification logic with skill reference to verification-layers | ||
| 4. Target: ~150 lines (down from 1200+) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/commands/implement.md` (edit) | ||
| - **Done when**: Command references skills, reduced to ~150-200 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/commands/implement.md) -lt 300 && grep -q "skill" plugins/ralph-specum/commands/implement.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify implement.md to reference skills` | ||
| - _Design: Command Simplification Plan_ | ||
|
|
||
| - [x] 2.16 Simplify start.md command | ||
| - **Do**: | ||
| 1. Replace inline branch management with skill reference to branch-management | ||
| 2. Replace inline intent classification with skill reference to intent-classification | ||
| 3. Replace inline spec scanning with skill reference to spec-scanner | ||
| 4. Target: ~200 lines (down from 980+) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/commands/start.md` (edit) | ||
| - **Done when**: Command references skills, reduced to ~200-250 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/commands/start.md) -lt 350 && grep -q "skill" plugins/ralph-specum/commands/start.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify start.md to reference skills` | ||
| - _Design: Command Simplification Plan_ | ||
|
|
||
| - [x] 2.17 Simplify research.md command | ||
| - **Do**: | ||
| 1. Replace inline parallel execution with skill reference to parallel-research | ||
| 2. Target: ~150 lines (down from 700+) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/commands/research.md` (edit) | ||
| - **Done when**: Command references skills, reduced to ~150-200 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/commands/research.md) -lt 250 && grep -q "skill" plugins/ralph-specum/commands/research.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify research.md to reference skills` | ||
| - _Design: Command Simplification Plan_ | ||
|
|
||
| - [x] 2.18 Simplify design.md, requirements.md, tasks.md commands | ||
| - **Do**: | ||
| 1. Each command already uses interview-framework skill | ||
| 2. Ensure explicit skill references are present | ||
| 3. Target: ~80 lines each (down from ~300) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/commands/design.md` (edit) | ||
| - `plugins/ralph-specum/commands/requirements.md` (edit) | ||
| - `plugins/ralph-specum/commands/tasks.md` (edit) | ||
| - **Done when**: Commands explicitly reference interview-framework skill | ||
| - **Verify**: `for f in design requirements tasks; do test $(wc -l < "plugins/ralph-specum/commands/$f.md") -lt 150 || echo "FAIL: $f"; done | grep -c FAIL | xargs test 0 -eq` | ||
| - **Commit**: `refactor(ralph-specum): simplify phase commands to reference skills` | ||
| - _Design: Command Simplification Plan_ | ||
|
|
||
| - [x] 2.19 [VERIFY] Quality checkpoint: command simplification | ||
| - **Do**: Verify all simplified commands are under target line counts | ||
| - **Verify**: `count=0; test $(wc -l < plugins/ralph-specum/commands/implement.md) -lt 300 || ((count++)); test $(wc -l < plugins/ralph-specum/commands/start.md) -lt 350 || ((count++)); test $(wc -l < plugins/ralph-specum/commands/research.md) -lt 250 || ((count++)); test $count -eq 0` | ||
| - **Done when**: All major commands under target line counts | ||
| - **Commit**: `chore(ralph-specum): pass command simplification checkpoint` (only if fixes needed) | ||
|
|
||
| ### B3: Simplify Agents | ||
|
|
||
| - [x] 2.20 Simplify spec-executor.md agent | ||
| - **Do**: | ||
| 1. Replace inline phase rules with skill reference to phase-rules | ||
| 2. Replace inline commit discipline with skill reference to commit-discipline | ||
| 3. Add skill reference to verification-layers for [VERIFY] tasks | ||
| 4. Target: ~200 lines (down from 440) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/agents/spec-executor.md` (edit) | ||
| - **Done when**: Agent references skills, reduced to ~200-250 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/agents/spec-executor.md) -lt 300 && grep -q "skill" plugins/ralph-specum/agents/spec-executor.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify spec-executor.md to reference skills` | ||
| - _Design: Agent Simplification Plan_ | ||
|
|
||
| - [x] 2.21 Simplify task-planner.md agent | ||
| - **Do**: | ||
| 1. Replace inline POC workflow with skill reference to phase-rules | ||
| 2. Replace inline quality checkpoints with skill reference to quality-checkpoints | ||
| 3. Target: ~250 lines (down from 520) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/agents/task-planner.md` (edit) | ||
| - **Done when**: Agent references skills, reduced to ~250-300 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/agents/task-planner.md) -lt 350 && grep -q "skill" plugins/ralph-specum/agents/task-planner.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify task-planner.md to reference skills` | ||
| - _Design: Agent Simplification Plan_ | ||
|
|
||
| - [x] 2.22 Simplify research-analyst.md agent | ||
| - **Do**: | ||
| 1. Replace inline quality command discovery with skill reference to quality-commands | ||
| 2. Target: ~200 lines (down from 340) | ||
| - **Files**: | ||
| - `plugins/ralph-specum/agents/research-analyst.md` (edit) | ||
| - **Done when**: Agent references skills, reduced to ~200-250 lines | ||
| - **Verify**: `test $(wc -l < plugins/ralph-specum/agents/research-analyst.md) -lt 280 && grep -q "skill" plugins/ralph-specum/agents/research-analyst.md` | ||
| - **Commit**: `refactor(ralph-specum): simplify research-analyst.md to reference skills` | ||
| - _Design: Agent Simplification Plan_ | ||
|
|
||
| - [x] 2.23 [VERIFY] Quality checkpoint: agent simplification | ||
| - **Do**: Verify all simplified agents are under target line counts | ||
| - **Verify**: `count=0; test $(wc -l < plugins/ralph-specum/agents/spec-executor.md) -lt 300 || ((count++)); test $(wc -l < plugins/ralph-specum/agents/task-planner.md) -lt 350 || ((count++)); test $(wc -l < plugins/ralph-specum/agents/research-analyst.md) -lt 280 || ((count++)); test $count -eq 0` | ||
| - **Done when**: All simplified agents under target line counts | ||
| - **Commit**: `chore(ralph-specum): pass agent simplification checkpoint` (only if fixes needed) | ||
|
|
||
| --- | ||
|
|
||
| ## Phase 3: Testing | ||
|
|
||
| Minimal testing per interview context. | ||
|
|
||
| - [x] 3.1 Run full validation script | ||
| - **Do**: Execute validation script to verify all compliance requirements | ||
| - **Files**: (none - verification only) | ||
| - **Done when**: Validation script passes with 0 errors | ||
| - **Verify**: `bash scripts/validate-plugins.sh` | ||
| - **Commit**: None (verification only) | ||
| - _Requirements: AC-5.1, AC-5.2, AC-5.3, AC-5.4_ | ||
|
|
||
| --- | ||
|
|
||
| ## Phase 4: Quality Gates | ||
|
|
||
| - [x] 4.1 [VERIFY] Full local validation | ||
| - **Do**: Run validation script and verify all components | ||
| - **Verify**: `bash scripts/validate-plugins.sh && echo "All checks pass"` | ||
| - **Done when**: Validation passes, no compliance issues | ||
| - **Commit**: `fix(plugins): address validation issues` (only if fixes needed) | ||
|
|
||
| - [x] 4.2 Create PR and verify | ||
| - **Do**: | ||
| 1. Verify current branch is feature branch: `git branch --show-current` | ||
| 2. Push branch: `git push -u origin $(git branch --show-current)` | ||
| 3. Create PR: `gh pr create --title "refactor(plugins): apply plugin-dev best practices" --body "..."` | ||
| 4. Wait for CI: `gh pr checks --watch` | ||
| - **Verify**: `gh pr checks | grep -v "pending\|in_progress" | grep -c "fail" | xargs test 0 -eq` | ||
| - **Done when**: PR created, CI passes | ||
| - **Commit**: None (PR creation) | ||
|
|
||
| --- | ||
|
|
||
| ## Phase 5: PR Lifecycle | ||
|
|
||
| - [x] 5.1 Monitor CI and fix failures |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align spec phases to the required 4‑phase POC‑first workflow.
This spec defines five phases, but the repo standard mandates exactly four (POC → Refactor → Testing → Quality Gates). Please merge PR lifecycle steps into Phase 4 or move them to Notes/appendix.
Based on learnings: “All specs must follow the 4-phase POC-first workflow: Phase 1 (Make It Work - POC validation, skip tests), Phase 2 (Refactoring - code cleanup), Phase 3 (Testing - unit, integration, e2e), Phase 4 (Quality Gates - lint, types, CI, PR)”.
🤖 Prompt for AI Agents
In `@specs/refactor-plugins/tasks.md` around lines 10 - 511, The spec currently
defines five phases (Phase 1..5) but must follow the repo standard four-phase
POC-first workflow; update specs/refactor-plugins/tasks.md to consolidate the PR
lifecycle/PR creation and monitoring steps (the content under "Phase 5: PR
Lifecycle" and the PR steps in "Phase 4: Quality Gates" / item 4.2) into the
Phase 4 "Quality Gates" section or move them to a Notes/Appendix section, and
rename/ensure the top-level headings match exactly: Phase 1: Make It Work (POC),
Phase 2: Refactoring, Phase 3: Testing, Phase 4: Quality Gates; adjust or remove
the separate "Phase 5" heading and ensure references to PR steps (4.2, 5.1, PR
creation/monitoring) are present only under Phase 4 or an appendix so the
document enforces the required 4‑phase workflow.
| | Phase | Files Changed | Files Created | Files Deleted | | ||
| |-------|---------------|---------------|---------------| | ||
| | Phase A | 32 | 9 | 9 | | ||
| | Phase B | 10 | 11 | 0 | | ||
| | **Total** | **42** | **20** | **9** | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix markdown table spacing (MD060).
The table pipes lack spacing, which markdownlint flags.
✅ Suggested fix
-| Phase | Files Changed | Files Created | Files Deleted |
-|-------|---------------|---------------|---------------|
-| Phase A | 32 | 9 | 9 |
-| Phase B | 10 | 11 | 0 |
-| **Total** | **42** | **20** | **9** |
+| Phase | Files Changed | Files Created | Files Deleted |
+|-------|---------------|---------------|---------------|
+| Phase A | 32 | 9 | 9 |
+| Phase B | 10 | 11 | 0 |
+| **Total** | **42** | **20** | **9** |🧰 Tools
🪛 markdownlint-cli2 (0.20.0)
[warning] 562-562: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 562-562: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
🤖 Prompt for AI Agents
In `@specs/refactor-plugins/tasks.md` around lines 561 - 565, The markdown table
in specs/refactor-plugins/tasks.md violates MD060 because the pipe characters in
the header and rows lack consistent spaces; update the three table lines (the
header line "| Phase | Files Changed | Files Created | Files Deleted |" the
separator "|-------|---------------|---------------|---------------|" and each
data row "| Phase A | 32 | 9 | 9 |", "| Phase B | 10 | 11 | 0 |", "| **Total** |
**42** | **20** | **9** |") so that there is a single space before and after
each pipe delimiter (i.e., ensure " | " between columns) to satisfy markdownlint
spacing rules.
- Add Skill tool to cancel.md allowed-tools (ralph-speckit) - Fix "Ralph Loop loop" duplicate wording to "Ralph Loop" - Change all-commands-SKIP to output VERIFICATION_FAIL (qa-engineer) - Add file path to T001 example (tasks.md) - Fix markdown table spacing (MD060) in multiple files: - start.md, intent-classification, quality-commands, spec-scanner - requirements.md, tasks.md - Capitalize GitHub in CI Configs heading (quality-commands) - Fix spec-scanner Example 3 match counts for consistency - Fix arithmetic increment under set -e (validate-plugins.sh) - Fix Example 2 "new" keyword to "new system" (intent-classification) - Bump versions: ralph-speckit 0.5.0->0.5.1, ralph-specum 2.11.0->2.11.1 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
plugins/ralph-specum/commands/start.md (1)
102-109:⚠️ Potential issue | 🟠 MajorAlign phase model with required 4-phase POC-first workflow.
The phase list and state initialization omit the required phases (POC validation, refactoring, testing, quality gates), which conflicts with the mandated workflow. Please update the phase taxonomy and flow steps to include Phase 1–4 explicitly.
💡 Suggested direction (update phases and state)
-| Phase | Action | -|-------|--------| -| research | Invoke research-analyst agent | -| requirements | Invoke product-manager agent | -| design | Invoke architect-reviewer agent | -| tasks | Invoke task-planner agent | -| execution | Invoke spec-executor for current task | +| Phase | Action | +|-------|--------| +| poc | Invoke research-analyst agent; validate POC (skip tests) | +| refactor | Invoke architect-reviewer agent; clean up and harden | +| testing | Invoke qa-engineer agent; unit/integration/e2e | +| quality-gates | Run lint/types/CI/PR checks |-6. Initialize `.ralph-state.json` with phase "research" +6. Initialize `.ralph-state.json` with phase "poc"Based on learnings: “All specs must follow the 4-phase POC-first workflow: Phase 1 (Make It Work - POC validation, skip tests), Phase 2 (Refactoring - code cleanup), Phase 3 (Testing - unit, integration, e2e), Phase 4 (Quality Gates - lint, types, CI, PR)”.
Also applies to: 124-124
plugins/ralph-speckit/agents/qa-engineer.md (1)
311-317:⚠️ Potential issue | 🟠 MajorAlign “command not found” handling with VERIFICATION_FAIL rules.
The mandatory section states any verification command failure should yield
VERIFICATION_FAIL, but the error table says “Command not found” is SKIP. That inconsistency can allow missing commands to pass.🛠️ Suggested fix
-| Command not found | Mark as SKIP, log warning, continue | +| Command not found | Mark as FAIL, report missing command |
🤖 Fix all issues with AI agents
In `@plugins/ralph-speckit/agents/qa-engineer.md`:
- Around line 1-21: The plugin’s version in plugin.json needs to be bumped
because agents/qa-engineer.md for the ralph-speckit plugin was modified; open
the plugin.json for the ralph-speckit plugin, update the "version" field to a
new valid semver (increment patch for a fix, minor for a feature, major for
breaking change), save and commit the change so the plugin version reflects the
agents/qa-engineer.md modification.
In `@plugins/ralph-specum/skills/quality-commands/SKILL.md`:
- Around line 41-43: Replace the overly restrictive grep pattern '^[a-z]+:' in
the SKILL.md example with a broader pattern that also matches digits, hyphens,
underscores and dots (e.g. grep -E '^[A-Za-z0-9._-]+:' Makefile) so targets like
test-unit, build_app or e2e are not missed; update the literal pattern string in
the doc (the grep example) to this new regex.
In `@plugins/ralph-specum/skills/spec-scanner/SKILL.md`:
- Around line 82-89: The tables in SKILL.md use compact pipe separators causing
markdownlint MD060 errors; update every table (including the "Stop Words",
"Scoring Rules" and "Edge Cases" tables) to add a single space before and after
each pipe and ensure each separator row uses the same column dashes and spacing
style (e.g., "| --- | --- |") so the header, separator, and data rows are
consistently spaced across the file.
In `@scripts/validate-plugins.sh`:
- Around line 84-95: The current check uses grep -q '"matcher"' which can be
fooled by unrelated strings; replace it with a jq-based validation on hooks_file
that asserts every hook object contains the matcher key (e.g., use jq -e
'all(.hooks[]; has("matcher"))' or 'all(.[]; has("matcher"))' depending on the
schema) and then call log_pass or log_fail for that hooks_file/plugin_name
accordingly; update the conditional that references hooks_file and keep using
PLUGINS_DIR, plugin_name, log_pass and log_fail to locate and report the result.
| --- | ||
| name: qa-engineer | ||
| description: QA engineer that runs verification commands and checks acceptance criteria for [VERIFY] tasks. | ||
| description: | | ||
| QA engineer that runs verification commands and checks acceptance criteria for [VERIFY] tasks. | ||
|
|
||
| <example> | ||
| Context: spec-executor delegates a verification checkpoint task | ||
| user: [Task tool invocation] Execute this verification task - V4 [VERIFY] Full local CI: pnpm lint && pnpm test | ||
| assistant: [Runs each command, captures exit codes, analyzes test quality for mock-only anti-patterns, outputs VERIFICATION_PASS or VERIFICATION_FAIL] | ||
| commentary: Triggered by spec-executor when encountering [VERIFY] tasks - never executed directly by users | ||
| </example> | ||
|
|
||
| <example> | ||
| Context: spec-executor delegates AC checklist verification | ||
| user: [Task tool invocation] V6 [VERIFY] AC checklist - verify all acceptance criteria from spec.md | ||
| assistant: [Reads spec.md, extracts all AC-* entries, verifies each against implementation, outputs table with PASS/FAIL/SKIP and evidence] | ||
| commentary: Triggered for final acceptance criteria verification before marking feature complete | ||
| </example> | ||
| model: inherit | ||
| color: yellow | ||
| --- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Find and display plugin.json and marketplace.json versions in ralph-speckit
echo "=== Checking plugin.json versions ==="
fd -a 'plugin.json' plugins/ralph-speckit -x cat {} 2>/dev/null | head -50
echo ""
echo "=== Checking marketplace.json versions ==="
fd -a 'marketplace.json' plugins/ralph-speckit -x cat {} 2>/dev/null | head -50Repository: tzachbon/smart-ralph
Length of output: 145
🏁 Script executed:
#!/bin/bash
# List the structure of ralph-speckit plugin
echo "=== Structure of plugins/ralph-speckit ==="
find plugins/ralph-speckit -type f -name "*.json" | head -20
echo ""
echo "=== Full directory tree of plugins/ralph-speckit ==="
tree plugins/ralph-speckit -L 3 2>/dev/null || find plugins/ralph-speckit -type f | sort
echo ""
echo "=== Search for all plugin.json files in repository ==="
fd -a 'plugin.json' plugins/
echo ""
echo "=== Search for all marketplace.json files in repository ==="
fd -a 'marketplace.json' plugins/Repository: tzachbon/smart-ralph
Length of output: 1384
🏁 Script executed:
#!/bin/bash
# Read the plugin.json file to check versioning
echo "=== Content of plugin.json ==="
cat plugins/ralph-speckit/.claude-plugin/plugin.jsonRepository: tzachbon/smart-ralph
Length of output: 472
🏁 Script executed:
#!/bin/bash
# Check git status/diff to see if plugin.json was modified in this PR
echo "=== Check git diff for plugin.json ==="
git diff HEAD -- plugins/ralph-speckit/.claude-plugin/plugin.json 2>/dev/null || echo "No git diff available"
echo ""
echo "=== Check git status ==="
git status plugins/ralph-speckit/.claude-plugin/plugin.json 2>/dev/null || echo "No git status available"
echo ""
echo "=== Check recent commits touching plugin.json ==="
git log --oneline -5 -- plugins/ralph-speckit/.claude-plugin/plugin.json 2>/dev/null || echo "No git log available"
echo ""
echo "=== Check if any changes exist in staging or working tree ==="
git diff --name-only 2>/dev/null | grep -E "(plugin\.json|marketplace\.json)" || echo "No plugin metadata changes in diff"Repository: tzachbon/smart-ralph
Length of output: 392
Bump plugin version for this agent change.
The file plugins/ralph-speckit/agents/qa-engineer.md requires a version bump to plugin.json (plugins/ralph-speckit/.claude-plugin/plugin.json) since changes to agent files trigger the version bump requirement. According to the coding guidelines, all modifications to files in plugins/*/agents/ must have the plugin version updated. Please bump the version using semantic versioning (patch for fixes, minor for features, major for breaking changes).
🤖 Prompt for AI Agents
In `@plugins/ralph-speckit/agents/qa-engineer.md` around lines 1 - 21, The
plugin’s version in plugin.json needs to be bumped because agents/qa-engineer.md
for the ralph-speckit plugin was modified; open the plugin.json for the
ralph-speckit plugin, update the "version" field to a new valid semver
(increment patch for a fix, minor for a feature, major for breaking change),
save and commit the change so the plugin version reflects the
agents/qa-engineer.md modification.
| ```bash | ||
| grep -E '^[a-z]+:' Makefile | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Broaden the Makefile target regex to avoid missing common targets.
^[a-z]+: skips targets like test-unit, build_app, or e2e. Consider matching common target characters.
♻️ Suggested tweak
-grep -E '^[a-z]+:' Makefile
+grep -E '^[[:alnum:]_-]+:' Makefile🤖 Prompt for AI Agents
In `@plugins/ralph-specum/skills/quality-commands/SKILL.md` around lines 41 - 43,
Replace the overly restrictive grep pattern '^[a-z]+:' in the SKILL.md example
with a broader pattern that also matches digits, hyphens, underscores and dots
(e.g. grep -E '^[A-Za-z0-9._-]+:' Makefile) so targets like test-unit, build_app
or e2e are not missed; update the literal pattern string in the doc (the grep
example) to this new regex.
| | Category | Words | | ||
| |----------|-------| | ||
| | Articles | the, a, an | | ||
| | Prepositions | to, for, with, on, in, of | | ||
| | Conjunctions | and, or | | ||
| | Pronouns | it, this, that | | ||
| | Verbs (common) | is, be | | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix table pipe spacing to satisfy markdownlint (MD060).
The tables in this file still use compact separators. Please add spaces around pipes and keep the separator rows consistent across all tables (Stop Words, Scoring Rules, Edge Cases).
🧹 Example fix (apply to all tables)
-|----------|-------|
+| -------- | ----- |📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| | Category | Words | | |
| |----------|-------| | |
| | Articles | the, a, an | | |
| | Prepositions | to, for, with, on, in, of | | |
| | Conjunctions | and, or | | |
| | Pronouns | it, this, that | | |
| | Verbs (common) | is, be | | |
| | Category | Words | | |
| | -------- | ----- | | |
| | Articles | the, a, an | | |
| | Prepositions | to, for, with, on, in, of | | |
| | Conjunctions | and, or | | |
| | Pronouns | it, this, that | | |
| | Verbs (common) | is, be | |
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)
[warning] 83-83: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 83-83: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 83-83: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 83-83: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/skills/spec-scanner/SKILL.md` around lines 82 - 89, The
tables in SKILL.md use compact pipe separators causing markdownlint MD060
errors; update every table (including the "Stop Words", "Scoring Rules" and
"Edge Cases" tables) to add a single space before and after each pipe and ensure
each separator row uses the same column dashes and spacing style (e.g., "| --- |
--- |") so the header, separator, and data rows are consistently spaced across
the file.
Integrate walkthrough feature from main: - Add Walkthrough sections to research.md, requirements.md, design.md, tasks.md - Walkthroughs include Key Points, Metrics, and Review Focus - Error handling for missing data in walkthrough extraction - Keep version bumps from PR review fixes (2.11.1, 0.5.1) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
| name: taskstoissues | ||
| description: Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts. | ||
| tools: ['github/github-mcp-server/issue_write'] | ||
| allowed-tools: [Read, Bash, mcp__github__create_issue] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hit to use gh cli as fallback
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🤖 Fix all issues with AI agents
In `@plugins/ralph-specum/commands/design.md`:
- Line 26: Reword step 3 to explicitly list the sequence of operations: first
read the `.ralph-state.json` file, then set the awaitingApproval property to
false, and finally write the updated JSON back to disk (i.e., "Read
`.ralph-state.json`, set `awaitingApproval: false`, and write back"). Mention
the `.ralph-state.json` file and the awaitingApproval field so implementers know
exactly which file/field to modify.
In `@plugins/ralph-specum/commands/requirements.md`:
- Around line 67-73: Replace the bold-as-heading "Skip if --quick flag." in the
"Review Loop" section with a proper Markdown heading (e.g., "Skip if --quick
flag") followed by a normal sentence explaining to ask the user to review
generated requirements and to re-invoke the product-manager with feedback until
approved; keep the existing note about skipping when --quick is provided and
ensure the "Update State" instruction that writes .ralph-state.json remains
unchanged.
- Around line 40-49: The markdown table under the "### Requirements Interview
Question Pool" header needs surrounding blank lines and consistent spacing
around pipe characters to satisfy MD058/MD060; edit the table rows and header
(including the separator row with ---) so each cell is separated by a single
space on both sides of "|" (e.g., " | ") and add one blank line before the table
and one blank line after it (the table stores responses in `.progress.md` under
"### Requirements Interview (from requirements.md)"—ensure that heading remains
intact and the `primaryUsers`, `priorityTradeoffs`, `successCriteria`, and
`additionalReqContext` keys and options columns keep the same content while you
normalize the pipe spacing and blank lines).
In `@plugins/ralph-specum/commands/research.md`:
- Around line 92-122: The markdown tables in the Research template are missing
separator rows; after each header row — "| Spec | Relevance | Relationship | May
Need Update |", "| Type | Command | Source |", and "| Aspect | Assessment |
Notes |" — insert the corresponding Markdown separator row (e.g. "| --- | --- |
--- | --- |", "| --- | --- | --- |", and "| --- | --- | --- |") immediately
beneath each header so the tables render correctly; update the template around
the "Related Specs", "Quality Commands", and "Feasibility Assessment" sections
accordingly.
In `@plugins/ralph-specum/commands/tasks.md`:
- Around line 46-49: The {goal} placeholder in the interview questions is
ambiguous; update the tasks.md "Gather Context" section to explicitly define how
{goal} is populated by stating that goal is extracted from the requirements.md
(e.g., "goal = extract primary objective from requirements.md"), or
alternatively note that {goal} is a literal shown to users—add this
clarification next to the "Gather Context" heading and reference the {goal}
placeholder so readers know to pull it from requirements.md (or that it will be
displayed verbatim).
- Around line 35-38: Update the skill-reference entry in
plugins/ralph-specum/commands/tasks.md to use the full repository-root path:
replace the relative `skills/interview-framework/SKILL.md` with
`plugins/ralph-specum/skills/interview-framework/SKILL.md` inside the
<skill-reference> block so it matches the convention used in start.md,
research.md, and implement.md; ensure the token `Apply skill` text remains
unchanged aside from the path.
🧹 Nitpick comments (1)
plugins/ralph-specum/commands/design.md (1)
43-49: Optional: Fix table formatting for consistency.Static analysis detected minor table formatting issues: missing blank line around the table and missing spaces around pipe characters. While these don't affect functionality, fixing them would improve consistency with markdown style guidelines.
📋 Proposed formatting fix
| 3 | How should this integrate with existing systems? | Required | `integrationApproach` | Use existing APIs / Create new layer / Minimal integration / Other | | 4 | Any other design context? (or 'done') | Optional | `additionalDesignContext` | No, proceed / Yes, more details / Other | + -Store responses in `.progress.md` under `### Design Interview (from design.md)` +Store responses in `.progress.md` under `### Design Interview (from design.md)`
| 2. Check `./specs/$spec/requirements.md` exists. If not, error: "Requirements not found. Run /ralph-specum:requirements first." | ||
| 3. Read `.ralph-state.json` | ||
| 4. Clear approval flag: update state with `awaitingApproval: false` | ||
| 3. Read `.ralph-state.json` and clear approval flag: `awaitingApproval: false` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify the read-and-update operation sequence.
The instruction "Read .ralph-state.json and clear approval flag" describes two operations but is phrased as a single step. Consider being explicit about the sequence: "Read .ralph-state.json, set awaitingApproval: false, and write back" to prevent ambiguity during execution.
✍️ Suggested clarification
-3. Read `.ralph-state.json` and clear approval flag: `awaitingApproval: false`
+3. Read `.ralph-state.json`, set `awaitingApproval: false`, and write back📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 3. Read `.ralph-state.json` and clear approval flag: `awaitingApproval: false` | |
| 3. Read `.ralph-state.json`, set `awaitingApproval: false`, and write back |
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/design.md` at line 26, Reword step 3 to
explicitly list the sequence of operations: first read the `.ralph-state.json`
file, then set the awaitingApproval property to false, and finally write the
updated JSON back to disk (i.e., "Read `.ralph-state.json`, set
`awaitingApproval: false`, and write back"). Mention the `.ralph-state.json`
file and the awaitingApproval field so implementers know exactly which
file/field to modify.
| ### Requirements Interview Question Pool | ||
|
|
||
| | # | Question | Required | Key | Options | | ||
| |---|----------|----------|-----|---------| | ||
| | 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal developers only / End users via UI / Both developers and end users / Other | | ||
| | 2 | What priority tradeoffs should we consider for {goal}? | Required | `priorityTradeoffs` | Prioritize speed of delivery / Prioritize code quality and maintainability / Prioritize feature completeness / Other | | ||
| | 3 | What defines success for this feature? | Required | `successCriteria` | Feature works as specified / High performance/reliability required / User satisfaction metrics / Other | | ||
| | 4 | Any other requirements context? (or say 'done' to proceed) | Optional | `additionalReqContext` | No, let's proceed / Yes, I have more details / Other | | ||
|
|
||
| ### Store Requirements Interview Responses | ||
|
|
||
| After interview, append to `.progress.md` under the "Interview Responses" section: | ||
|
|
||
| ```markdown | ||
| ### Requirements Interview (from requirements.md) | ||
| - Primary users: [responses.primaryUsers] | ||
| - Priority tradeoffs: [responses.priorityTradeoffs] | ||
| - Success criteria: [responses.successCriteria] | ||
| - Additional requirements context: [responses.additionalReqContext] | ||
| [Any follow-up responses from "Other" selections] | ||
| ``` | ||
| | 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal devs / End users via UI / Both / Other | | ||
| | 2 | What priority tradeoffs for {goal}? | Required | `priorityTradeoffs` | Speed of delivery / Code quality / Feature completeness / Other | | ||
| | 3 | What defines success for this feature? | Required | `successCriteria` | Works as specified / High performance / User satisfaction / Other | | ||
| | 4 | Any other requirements context? (or 'done') | Optional | `additionalReqContext` | No, proceed / Yes, more details / Other | | ||
|
|
||
| ### Interview Context Format | ||
|
|
||
| Pass the combined context (prior + new responses) to the Task delegation prompt: | ||
|
|
||
| ```text | ||
| Interview Context: | ||
| - Primary users: [Answer] | ||
| - Priority tradeoffs: [Answer] | ||
| - Success criteria: [Answer] | ||
| - Follow-up details: [Any additional clarifications] | ||
| ``` | ||
|
|
||
| Store this context to include in the Task delegation prompt. | ||
| Store responses in `.progress.md` under `### Requirements Interview (from requirements.md)` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix table formatting (blank lines + pipe spacing).
markdownlint flags MD058/MD060 around the question pool table. Add blank lines around the table and ensure spaces around pipes.
🔧 Proposed markdown fixes
### Requirements Interview Question Pool
-
-| # | Question | Required | Key | Options |
-|---|----------|----------|-----|---------|
-| 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal devs / End users via UI / Both / Other |
-| 2 | What priority tradeoffs for {goal}? | Required | `priorityTradeoffs` | Speed of delivery / Code quality / Feature completeness / Other |
-| 3 | What defines success for this feature? | Required | `successCriteria` | Works as specified / High performance / User satisfaction / Other |
-| 4 | Any other requirements context? (or 'done') | Optional | `additionalReqContext` | No, proceed / Yes, more details / Other |
-
-Store responses in `.progress.md` under `### Requirements Interview (from requirements.md)`
+
+| # | Question | Required | Key | Options |
+| --- | --- | --- | --- | --- |
+| 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal devs / End users via UI / Both / Other |
+| 2 | What priority tradeoffs for {goal}? | Required | `priorityTradeoffs` | Speed of delivery / Code quality / Feature completeness / Other |
+| 3 | What defines success for this feature? | Required | `successCriteria` | Works as specified / High performance / User satisfaction / Other |
+| 4 | Any other requirements context? (or 'done') | Optional | `additionalReqContext` | No, proceed / Yes, more details / Other |
+
+Store responses in `.progress.md` under `### Requirements Interview (from requirements.md)`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Requirements Interview Question Pool | |
| | # | Question | Required | Key | Options | | |
| |---|----------|----------|-----|---------| | |
| | 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal developers only / End users via UI / Both developers and end users / Other | | |
| | 2 | What priority tradeoffs should we consider for {goal}? | Required | `priorityTradeoffs` | Prioritize speed of delivery / Prioritize code quality and maintainability / Prioritize feature completeness / Other | | |
| | 3 | What defines success for this feature? | Required | `successCriteria` | Feature works as specified / High performance/reliability required / User satisfaction metrics / Other | | |
| | 4 | Any other requirements context? (or say 'done' to proceed) | Optional | `additionalReqContext` | No, let's proceed / Yes, I have more details / Other | | |
| ### Store Requirements Interview Responses | |
| After interview, append to `.progress.md` under the "Interview Responses" section: | |
| ```markdown | |
| ### Requirements Interview (from requirements.md) | |
| - Primary users: [responses.primaryUsers] | |
| - Priority tradeoffs: [responses.priorityTradeoffs] | |
| - Success criteria: [responses.successCriteria] | |
| - Additional requirements context: [responses.additionalReqContext] | |
| [Any follow-up responses from "Other" selections] | |
| ``` | |
| | 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal devs / End users via UI / Both / Other | | |
| | 2 | What priority tradeoffs for {goal}? | Required | `priorityTradeoffs` | Speed of delivery / Code quality / Feature completeness / Other | | |
| | 3 | What defines success for this feature? | Required | `successCriteria` | Works as specified / High performance / User satisfaction / Other | | |
| | 4 | Any other requirements context? (or 'done') | Optional | `additionalReqContext` | No, proceed / Yes, more details / Other | | |
| ### Interview Context Format | |
| Pass the combined context (prior + new responses) to the Task delegation prompt: | |
| ```text | |
| Interview Context: | |
| - Primary users: [Answer] | |
| - Priority tradeoffs: [Answer] | |
| - Success criteria: [Answer] | |
| - Follow-up details: [Any additional clarifications] | |
| ``` | |
| Store this context to include in the Task delegation prompt. | |
| Store responses in `.progress.md` under `### Requirements Interview (from requirements.md)` | |
| ### Requirements Interview Question Pool | |
| | # | Question | Required | Key | Options | | |
| | --- | --- | --- | --- | --- | | |
| | 1 | Who are the primary users of this feature? | Required | `primaryUsers` | Internal devs / End users via UI / Both / Other | | |
| | 2 | What priority tradeoffs for {goal}? | Required | `priorityTradeoffs` | Speed of delivery / Code quality / Feature completeness / Other | | |
| | 3 | What defines success for this feature? | Required | `successCriteria` | Works as specified / High performance / User satisfaction / Other | | |
| | 4 | Any other requirements context? (or 'done') | Optional | `additionalReqContext` | No, proceed / Yes, more details / Other | | |
| Store responses in `.progress.md` under `### Requirements Interview (from requirements.md)` |
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)
[warning] 48-48: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 49-49: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the right for style "compact"
(MD060, table-column-style)
[warning] 49-49: Table column style
Table pipe is missing space to the left for style "compact"
(MD060, table-column-style)
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/requirements.md` around lines 40 - 49, The
markdown table under the "### Requirements Interview Question Pool" header needs
surrounding blank lines and consistent spacing around pipe characters to satisfy
MD058/MD060; edit the table rows and header (including the separator row with
---) so each cell is separated by a single space on both sides of "|" (e.g., " |
") and add one blank line before the table and one blank line after it (the
table stores responses in `.progress.md` under "### Requirements Interview (from
requirements.md)"—ensure that heading remains intact and the `primaryUsers`,
`priorityTradeoffs`, `successCriteria`, and `additionalReqContext` keys and
options columns keep the same content while you normalize the pipe spacing and
blank lines).
| ## Review Loop | ||
|
|
||
| Check if `--quick` appears anywhere in `$ARGUMENTS`. If present, skip directly to "Update State". | ||
|
|
||
| ### Requirements Review Questions | ||
|
|
||
| After the requirements have been created by the product-manager agent, ask the user to review them and provide feedback. | ||
|
|
||
| **Review Question Flow:** | ||
|
|
||
| 1. **Read the generated requirements.md** to understand what was created | ||
| 2. **Ask initial review questions** to confirm the requirements meet their expectations: | ||
|
|
||
| | # | Question | Key | Options | | ||
| |---|----------|-----|---------| | ||
| | 1 | Do the user stories capture your intended functionality? | `userStoriesApproval` | Yes, complete / Missing some stories / Need refinement / Other | | ||
| | 2 | Are the acceptance criteria clear and testable? | `acceptanceCriteriaApproval` | Yes, clear / Need more details / Some are unclear / Other | | ||
| | 3 | Are the priorities and scope appropriate? | `prioritiesApproval` | Yes, appropriate / Need adjustment / Missing items / Other | | ||
| | 4 | Any other feedback on the requirements? (or say 'approved' to proceed) | `requirementsFeedback` | Approved, let's proceed / Yes, I have feedback / Other | | ||
|
|
||
| ### Store Requirements Review Responses | ||
|
|
||
| After review questions, append to `.progress.md` under a new section: | ||
|
|
||
| ```markdown | ||
| ### Requirements Review (from requirements.md) | ||
| - User stories approval: [responses.userStoriesApproval] | ||
| - Acceptance criteria approval: [responses.acceptanceCriteriaApproval] | ||
| - Priorities approval: [responses.prioritiesApproval] | ||
| - Requirements feedback: [responses.requirementsFeedback] | ||
| [Any follow-up responses from "Other" selections] | ||
| ``` | ||
|
|
||
| ### Update Requirements Based on Feedback | ||
|
|
||
| <mandatory> | ||
| If the user provided feedback requiring changes (any answer other than "Yes, complete", "Yes, clear", "Yes, appropriate", or "Approved, let's proceed"), you MUST: | ||
|
|
||
| 1. Collect specific change requests from the user | ||
| 2. Invoke product-manager again with update instructions | ||
| 3. Repeat the review questions after updates | ||
| 4. Continue loop until user approves | ||
| </mandatory> | ||
|
|
||
| **Update Flow:** | ||
|
|
||
| If changes are needed: | ||
|
|
||
| 1. **Ask for specific changes:** | ||
| ``` | ||
| What specific changes would you like to see in the requirements? | ||
| ``` | ||
|
|
||
| 2. **Invoke product-manager with update prompt:** | ||
| ``` | ||
| You are updating the requirements for spec: $spec | ||
| Spec path: ./specs/$spec/ | ||
|
|
||
| Current requirements: ./specs/$spec/requirements.md | ||
|
|
||
| User feedback: | ||
| $user_feedback | ||
|
|
||
| Your task: | ||
| 1. Read the existing requirements.md | ||
| 2. Understand the user's feedback and concerns | ||
| 3. Update the requirements to address the feedback | ||
| 4. Maintain consistency with research findings | ||
| 5. Update requirements.md with the changes | ||
| 6. Append update notes to .progress.md explaining what changed | ||
|
|
||
| Focus on addressing the specific feedback while maintaining requirements quality. | ||
| ``` | ||
|
|
||
| 3. **After update, repeat review questions** (go back to "Requirements Review Questions") | ||
|
|
||
| 4. **Continue until approved:** Loop until user responds with approval | ||
| **Skip if --quick flag.** Ask user to review generated requirements. If changes needed, invoke product-manager again with feedback and repeat until approved. | ||
|
|
||
| ## Update State | ||
|
|
||
| After requirements complete and approved: | ||
|
|
||
| 1. Update `.ralph-state.json`: | ||
| ```json | ||
| { | ||
| "phase": "requirements", | ||
| "awaitingApproval": true, | ||
| ... | ||
| } | ||
| ``` | ||
|
|
||
| 2. Update `.progress.md`: | ||
| - Mark research as implicitly approved | ||
| - Set current phase to requirements | ||
| Update `.ralph-state.json`: `{ "phase": "requirements", "awaitingApproval": true }` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid bold-as-heading in review loop.
markdownlint MD036 flags the bold sentence; use a heading + sentence instead.
✍️ Proposed tweak
-**Skip if --quick flag.** Ask user to review generated requirements. If changes needed, invoke product-manager again with feedback and repeat until approved.
+### Quick mode
+Skip if --quick flag. Ask user to review generated requirements. If changes needed, invoke product-manager again with feedback and repeat until approved.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Review Loop | |
| Check if `--quick` appears anywhere in `$ARGUMENTS`. If present, skip directly to "Update State". | |
| ### Requirements Review Questions | |
| After the requirements have been created by the product-manager agent, ask the user to review them and provide feedback. | |
| **Review Question Flow:** | |
| 1. **Read the generated requirements.md** to understand what was created | |
| 2. **Ask initial review questions** to confirm the requirements meet their expectations: | |
| | # | Question | Key | Options | | |
| |---|----------|-----|---------| | |
| | 1 | Do the user stories capture your intended functionality? | `userStoriesApproval` | Yes, complete / Missing some stories / Need refinement / Other | | |
| | 2 | Are the acceptance criteria clear and testable? | `acceptanceCriteriaApproval` | Yes, clear / Need more details / Some are unclear / Other | | |
| | 3 | Are the priorities and scope appropriate? | `prioritiesApproval` | Yes, appropriate / Need adjustment / Missing items / Other | | |
| | 4 | Any other feedback on the requirements? (or say 'approved' to proceed) | `requirementsFeedback` | Approved, let's proceed / Yes, I have feedback / Other | | |
| ### Store Requirements Review Responses | |
| After review questions, append to `.progress.md` under a new section: | |
| ```markdown | |
| ### Requirements Review (from requirements.md) | |
| - User stories approval: [responses.userStoriesApproval] | |
| - Acceptance criteria approval: [responses.acceptanceCriteriaApproval] | |
| - Priorities approval: [responses.prioritiesApproval] | |
| - Requirements feedback: [responses.requirementsFeedback] | |
| [Any follow-up responses from "Other" selections] | |
| ``` | |
| ### Update Requirements Based on Feedback | |
| <mandatory> | |
| If the user provided feedback requiring changes (any answer other than "Yes, complete", "Yes, clear", "Yes, appropriate", or "Approved, let's proceed"), you MUST: | |
| 1. Collect specific change requests from the user | |
| 2. Invoke product-manager again with update instructions | |
| 3. Repeat the review questions after updates | |
| 4. Continue loop until user approves | |
| </mandatory> | |
| **Update Flow:** | |
| If changes are needed: | |
| 1. **Ask for specific changes:** | |
| ``` | |
| What specific changes would you like to see in the requirements? | |
| ``` | |
| 2. **Invoke product-manager with update prompt:** | |
| ``` | |
| You are updating the requirements for spec: $spec | |
| Spec path: ./specs/$spec/ | |
| Current requirements: ./specs/$spec/requirements.md | |
| User feedback: | |
| $user_feedback | |
| Your task: | |
| 1. Read the existing requirements.md | |
| 2. Understand the user's feedback and concerns | |
| 3. Update the requirements to address the feedback | |
| 4. Maintain consistency with research findings | |
| 5. Update requirements.md with the changes | |
| 6. Append update notes to .progress.md explaining what changed | |
| Focus on addressing the specific feedback while maintaining requirements quality. | |
| ``` | |
| 3. **After update, repeat review questions** (go back to "Requirements Review Questions") | |
| 4. **Continue until approved:** Loop until user responds with approval | |
| **Skip if --quick flag.** Ask user to review generated requirements. If changes needed, invoke product-manager again with feedback and repeat until approved. | |
| ## Update State | |
| After requirements complete and approved: | |
| 1. Update `.ralph-state.json`: | |
| ```json | |
| { | |
| "phase": "requirements", | |
| "awaitingApproval": true, | |
| ... | |
| } | |
| ``` | |
| 2. Update `.progress.md`: | |
| - Mark research as implicitly approved | |
| - Set current phase to requirements | |
| Update `.ralph-state.json`: `{ "phase": "requirements", "awaitingApproval": true }` | |
| ## Review Loop | |
| ### Quick mode | |
| Skip if --quick flag. Ask user to review generated requirements. If changes needed, invoke product-manager again with feedback and repeat until approved. | |
| ## Update State | |
| Update `.ralph-state.json`: `{ "phase": "requirements", "awaitingApproval": true }` |
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/requirements.md` around lines 67 - 73, Replace
the bold-as-heading "Skip if --quick flag." in the "Review Loop" section with a
proper Markdown heading (e.g., "Skip if --quick flag") followed by a normal
sentence explaining to ask the user to review generated requirements and to
re-invoke the product-manager with feedback until approved; keep the existing
note about skipping when --quick is provided and ensure the "Update State"
instruction that writes .ralph-state.json remains unchanged.
| ```markdown | ||
| # Research: $spec | ||
|
|
||
| **Task 3 - Codebase Analysis (Explore):** | ||
| ```yaml | ||
| subagent_type: Explore | ||
| thoroughness: very thorough | ||
| ## Executive Summary | ||
| [Synthesize key findings - 2-3 sentences] | ||
|
|
||
| Topic: Existing API and caching patterns in codebase | ||
| Output: ./specs/$spec/.research-codebase.md | ||
| ## External Research | ||
| ### Best Practices | ||
| ### Prior Art | ||
| ### Pitfalls to Avoid | ||
|
|
||
| 1. Search for existing API implementations | ||
| 2. Find any caching code or patterns | ||
| 3. Identify relevant dependencies | ||
| 4. Document patterns with file paths | ||
| ``` | ||
| ## Codebase Analysis | ||
| ### Existing Patterns | ||
| ### Dependencies | ||
| ### Constraints | ||
|
|
||
| **Task 4 - Quality Commands (Explore):** | ||
| ```yaml | ||
| subagent_type: Explore | ||
| thoroughness: quick | ||
| ## Related Specs | ||
| | Spec | Relevance | Relationship | May Need Update | | ||
|
|
||
| Topic: Quality commands discovery | ||
| Output: ./specs/$spec/.research-quality.md | ||
| ## Quality Commands | ||
| | Type | Command | Source | | ||
|
|
||
| 1. Check package.json scripts | ||
| 2. Check Makefile if exists | ||
| 3. Check CI workflow commands | ||
| 4. Output as table: Type | Command | Source | ||
| ``` | ||
| ## Feasibility Assessment | ||
| | Aspect | Assessment | Notes | | ||
|
|
||
| **Task 5 - Related Specs (Explore):** | ||
| ```yaml | ||
| subagent_type: Explore | ||
| thoroughness: medium | ||
| ## Recommendations for Requirements | ||
|
|
||
| Topic: Related specs discovery | ||
| Output: ./specs/$spec/.research-related-specs.md | ||
| ## Open Questions | ||
|
|
||
| 1. Scan ./specs/ for existing specs | ||
| 2. Read each spec's progress and requirements | ||
| 3. Identify overlaps with GraphQL/caching goal | ||
| 4. Output as table: Name | Relevance | Relationship | mayNeedUpdate | ||
| ## Sources | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix incomplete markdown tables in the template.
The research.md template contains three table headers without separator rows, which will cause the tables to not render properly in the generated output:
- Line 110:
| Spec | Relevance | Relationship | May Need Update | - Line 113:
| Type | Command | Source | - Line 116:
| Aspect | Assessment | Notes |
Each table header must be followed by a separator row for proper markdown rendering.
📋 Proposed fix to add table separators
## Related Specs
| Spec | Relevance | Relationship | May Need Update |
+|------|-----------|--------------|-----------------|
## Quality Commands
| Type | Command | Source |
+|------|---------|--------|
## Feasibility Assessment
| Aspect | Assessment | Notes |
+|--------|------------|-------|📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ```markdown | |
| # Research: $spec | |
| **Task 3 - Codebase Analysis (Explore):** | |
| ```yaml | |
| subagent_type: Explore | |
| thoroughness: very thorough | |
| ## Executive Summary | |
| [Synthesize key findings - 2-3 sentences] | |
| Topic: Existing API and caching patterns in codebase | |
| Output: ./specs/$spec/.research-codebase.md | |
| ## External Research | |
| ### Best Practices | |
| ### Prior Art | |
| ### Pitfalls to Avoid | |
| 1. Search for existing API implementations | |
| 2. Find any caching code or patterns | |
| 3. Identify relevant dependencies | |
| 4. Document patterns with file paths | |
| ``` | |
| ## Codebase Analysis | |
| ### Existing Patterns | |
| ### Dependencies | |
| ### Constraints | |
| **Task 4 - Quality Commands (Explore):** | |
| ```yaml | |
| subagent_type: Explore | |
| thoroughness: quick | |
| ## Related Specs | |
| | Spec | Relevance | Relationship | May Need Update | | |
| Topic: Quality commands discovery | |
| Output: ./specs/$spec/.research-quality.md | |
| ## Quality Commands | |
| | Type | Command | Source | | |
| 1. Check package.json scripts | |
| 2. Check Makefile if exists | |
| 3. Check CI workflow commands | |
| 4. Output as table: Type | Command | Source | |
| ``` | |
| ## Feasibility Assessment | |
| | Aspect | Assessment | Notes | | |
| **Task 5 - Related Specs (Explore):** | |
| ```yaml | |
| subagent_type: Explore | |
| thoroughness: medium | |
| ## Recommendations for Requirements | |
| Topic: Related specs discovery | |
| Output: ./specs/$spec/.research-related-specs.md | |
| ## Open Questions | |
| 1. Scan ./specs/ for existing specs | |
| 2. Read each spec's progress and requirements | |
| 3. Identify overlaps with GraphQL/caching goal | |
| 4. Output as table: Name | Relevance | Relationship | mayNeedUpdate | |
| ## Sources | |
| ``` |
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/research.md` around lines 92 - 122, The
markdown tables in the Research template are missing separator rows; after each
header row — "| Spec | Relevance | Relationship | May Need Update |", "| Type |
Command | Source |", and "| Aspect | Assessment | Notes |" — insert the
corresponding Markdown separator row (e.g. "| --- | --- | --- | --- |", "| --- |
--- | --- |", and "| --- | --- | --- |") immediately beneath each header so the
tables render correctly; update the template around the "Related Specs",
"Quality Commands", and "Feasibility Assessment" sections accordingly.
| <skill-reference> | ||
| **Apply skill**: `skills/interview-framework/SKILL.md` | ||
| Use interview framework for single-question loop, parameter chain, and completion signals. | ||
| </skill-reference> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify interview-framework skill exists and check path conventions
echo "=== Checking if interview-framework skill exists in plugin ==="
find plugins/ralph-specum -name "SKILL.md" -o -name "interview-framework" -type d 2>/dev/null
echo ""
echo "=== Listing all SKILL.md files in plugins/ralph-specum ==="
find plugins/ralph-specum -name "SKILL.md" 2>/dev/null
echo ""
echo "=== Checking skill-reference patterns in commands ==="
rg '<skill-reference>' plugins/ralph-specum/commands/ -A3 2>/dev/null | head -40
echo ""
echo "=== Checking tasks.md context around lines 35-38 ==="
sed -n '30,45p' plugins/ralph-specum/commands/tasks.md 2>/dev/nullRepository: tzachbon/smart-ralph
Length of output: 5619
🏁 Script executed:
#!/bin/bash
# Check for all skill-reference patterns to identify convention
echo "=== All skill-reference paths used in commands ==="
rg '<skill-reference>' plugins/ralph-specum/commands/ -A1 | grep "Apply skill" | sort | uniq -c
echo ""
echo "=== Commands using relative paths (skills/) ==="
rg 'Apply skill.*`skills/' plugins/ralph-specum/commands/ -l
echo ""
echo "=== Commands using full paths (plugins/ralph-specum/skills/) ==="
rg 'Apply skill.*`plugins/ralph-specum/skills/' plugins/ralph-specum/commands/ -l
echo ""
echo "=== Check if there's a plugin-dev documentation ==="
find . -path "*/plugin-dev*" -type f 2>/dev/null | head -20Repository: tzachbon/smart-ralph
Length of output: 1835
🏁 Script executed:
#!/bin/bash
# Search for documentation on path conventions or README files
echo "=== Searching for command documentation or README ==="
find plugins/ralph-specum -name "README*" -o -name "*.md" -path "*command*" | head -10
echo ""
echo "=== Check for any comments in commands about path convention ==="
rg -i "path|convention|reference" plugins/ralph-specum/commands/ --type md | head -20
echo ""
echo "=== Check the command files that use full paths vs relative ==="
echo "--- design.md (relative path) ---"
head -5 plugins/ralph-specum/commands/design.md
echo ""
echo "--- start.md (full path) ---"
head -5 plugins/ralph-specum/commands/start.md
echo ""
echo "=== Check if there's any pattern in file modification dates or grouping ==="
ls -la plugins/ralph-specum/commands/ | grep -E 'design|requirements|tasks|start|research|implement'Repository: tzachbon/smart-ralph
Length of output: 3861
Use full path convention for skill reference.
The skill reference uses skills/interview-framework/SKILL.md, but the established convention across most commands is to use the full path from repository root: plugins/ralph-specum/skills/interview-framework/SKILL.md. Update to match the standard used in start.md, research.md, and implement.md.
🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/tasks.md` around lines 35 - 38, Update the
skill-reference entry in plugins/ralph-specum/commands/tasks.md to use the full
repository-root path: replace the relative `skills/interview-framework/SKILL.md`
with `plugins/ralph-specum/skills/interview-framework/SKILL.md` inside the
<skill-reference> block so it matches the convention used in start.md,
research.md, and implement.md; ensure the token `Apply skill` text remains
unchanged aside from the path.
| | 1 | What testing depth for {goal}? | Required | `testingDepth` | Standard unit+integration / Minimal POC only / Comprehensive E2E / Other | | ||
| | 2 | Deployment considerations for {goal}? | Required | `deploymentApproach` | Standard CI/CD / Feature flag / Gradual rollout / Other | | ||
| | 3 | What's the execution priority? | Required | `executionPriority` | Ship fast POC / Balanced quality+speed / Quality first / Other | | ||
| | 4 | Any other execution context? (or 'done') | Optional | `additionalTasksContext` | No, proceed / Yes, more details / Other | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify {goal} placeholder population.
The interview questions use a {goal} placeholder (e.g., "What testing depth for {goal}?"), but there's no indication in the command of where this value should come from or how it should be populated.
The "Gather Context" section (line 31) reads requirements, design, research, and progress files, but doesn't explicitly extract or define {goal}. Consider either:
- Documenting that
{goal}should be extracted fromrequirements.md - Showing explicit extraction:
goal = [extract from requirements] - Clarifying if this is meant to be a literal placeholder string that the user sees
📝 Suggested clarification
Add after line 31:
Read: `./specs/$spec/requirements.md`, `./specs/$spec/design.md`, `./specs/$spec/research.md` (if exists), `./specs/$spec/.progress.md`
+
+Extract `goal` from requirements.md frontmatter or summary section to use in interview questions.🤖 Prompt for AI Agents
In `@plugins/ralph-specum/commands/tasks.md` around lines 46 - 49, The {goal}
placeholder in the interview questions is ambiguous; update the tasks.md "Gather
Context" section to explicitly define how {goal} is populated by stating that
goal is extracted from the requirements.md (e.g., "goal = extract primary
objective from requirements.md"), or alternatively note that {goal} is a literal
shown to users—add this clarification next to the "Gather Context" heading and
reference the {goal} placeholder so readers know to pull it from requirements.md
(or that it will be displayed verbatim).
Replace grep-based check with jq validation to properly verify that every hook object in .hooks.<event>[] has a matcher key. The previous grep check could be fooled by unrelated strings. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The previous simplification removed too much critical content from commands and agents. Skills are not automatically loaded - they're just documentation references. The coordinator prompt and agents need to be self-contained. Restored files from commit d8cf596 (post-Phase A metadata, pre-simplification): - implement.md: 233 -> 589 lines (restored coordinator prompt content) - start.md: 248 -> 979 lines (restored branch management, quick mode, interviews) - research.md: 235 -> 746 lines (restored parallel research, merge logic) - spec-executor.md: 232 -> 456 lines (restored execution rules) - task-planner.md: 286 -> 537 lines (restored POC workflow, task format) - research-analyst.md: 235 -> 354 lines (restored research methodology) Added walkthrough feature to research.md output section. Bumped version to 2.11.2. The skills remain as supplementary documentation for reference, but the core logic is now inline where it's needed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
Refactors both ralph-specum and ralph-speckit plugins to follow plugin-dev best practices:
Phase A: Metadata Fixes
colorfield to all 14 agents (blue/cyan=analysis, green=execution, yellow=validation, magenta=transformation)<example>blocks to all agents for proper triggeringversion: 0.1.0to all 21 skillsmatcher: "*"to all hook entries.claude/commands/tocommands/Phase B: Skill Consolidation
New skills extracted from commands/agents:
failure-recovery- Recovery orchestration from implement.mdverification-layers- 4-layer verification patterncoordinator-pattern- Task delegation patternbranch-management- Branch/worktree workflowintent-classification- Goal type detectionspec-scanner- Spec discovery logicparallel-research- Multi-agent parallel executionphase-rules- POC/Refactor/Testing/Quality phase behaviorscommit-discipline- Commit conventions and rulesquality-checkpoints- [VERIFY] task insertion rulesquality-commands- Package.json/Makefile command discoveryCommands/agents now reference skills via
<skill-reference>blocks, reducing duplication significantly.Test Plan
bash scripts/validate-plugins.sh🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Improvements
Updates
✏️ Tip: You can customize this high-level summary in your review settings.