feat(skills): /feature — idea → create-prd → create-stories, gated (#208) - #238
Conversation
Add the /feature orchestrator skill (.claude/skills/feature/SKILL.md): a thin chain over grill-me → /create-prd (or /prd-interactive on --cold) → [hard GATE 1: confirm PRD] → /create-stories → [GATE 2: /create-stories' own existing Phase 6.1 issue gate, reused not reimplemented]. Reuses the shipped PRD/story flows by invocation name; no PRD or story logic is reimplemented. Ends at a report and only suggests the per-issue /prime→/plan→/implement loop. Adds a one-line driven-shortcut pointer to WORKFLOW.md under the medium/large path (manual steps left intact). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
There was a problem hiding this comment.
This lands cleanly. The feature skill is a well-structured thin orchestrator — it chains the existing flows by invocation name rather than reimplementing them, owns exactly one gate (PRD-to-stories), and correctly reuses create-stories Phase 6.1 gate rather than duplicating it. The routing table (warm/cold), the gate branches (yes/edit/abort), and the guardrails section are all correct and coherent. The one-line addition to WORKFLOW.md is a good pointer without cluttering the manual steps. No hard-rule violations, no dead references in code, no parity concerns (tooling changes only, not app code). Good to go.
|
There was a problem hiding this comment.
Code Review: PR #238
Scope: PR #238 — feat(skills): /feature — idea → create-prd → create-stories, gated (#208)
Recommendation: NEEDS WORK
Summary
This PR adds a new /feature orchestrator skill (.claude/skills/feature/SKILL.md) and a two-line pointer in WORKFLOW.md. The overall design is sound — thin orchestrator, no reimplemented logic, two hard gates — but two issues need resolution before merge: one High (a hardcoded Windows-absolute path to grill-me that will silently fail on CI and other machines), and one Medium (Stage 3 prose that elides the --no-create conditionality on Phase 6). Two Low/Info observations are also noted.
Findings
Critical
None.
High
[HIGH] Stage 1 hardcodes a Windows-absolute path to grill-me that is non-portable and will break on CI/Linux
- dimension: Correctness (#1)
- location:
.claude/skills/feature/SKILL.md:37 - issue: Stage 1 instructs: "Apply the
grill-meposture (C:/Users/thoma/.claude/skills/grill-me/SKILL.md)". The sibling/executeskill references the same skill with no filesystem path — the harness resolves skills by name. HardcodingC:/Users/thoma/...makes this path meaningless on the Linux CI runner and on any collaborator's machine, and leaks a local developer path into a committed file. - risk: Any agent reading this file literally will encounter a dead path on CI or any non-developer machine. Even for the primary developer it is fragile across machines or user-directory renames.
- fix: Replace the parenthetical with the invocation-name-only reference used everywhere else: "Apply the
grill-meposture" — no path, no parenthetical. The harness resolves the skill by name; filesystem paths belong in.mcp.json/ settings, not a SKILL.md. - reference: CLAUDE.md rule 1 (root-cause, no workarounds);
/executeSKILL.md lines 50-53 (established pattern)
Medium
[MEDIUM] Stage 3 prose implies Phase 6 of /create-stories always fires — omits the --no-create conditionality
- dimension: Correctness (#1)
- location:
.claude/skills/feature/SKILL.md:72-74 - issue: Stage 3 says: "It writes
.claude/stories/<name>.md(its Phase 5) and then proceeds to its own Phase 6." This reads as unconditional, but/create-storiesPhase 6 opens with: "Skip this phase if--no-createwas passed." The flag is documented in the inputs table but Stage 3's prose does not reflect it — an agent reading Stage 3 in isolation would not know Phase 6 is conditional. - risk: Low runtime risk (the flag is documented elsewhere in the file), but the description could cause an agent to mis-describe the flow to the user or miscount the gates in the
--no-createpath. - fix: Change Stage 3 to: "It writes
.claude/stories/<name>.md(Phase 5). If--no-createwas NOT passed, it then proceeds to its own Phase 6 (issue creation gate)." This matches/create-storiesexactly. - reference: CLAUDE.md rule 1 (accuracy of chained-flow descriptions)
Low / Info
[LOW] Stage 2 cold-path aside is a load-bearing instruction buried in a parenthetical
- dimension: Comment policy (#4, informational — linter does not cover .md files)
- location:
.claude/skills/feature/SKILL.md:58-59 - issue: "read the path back from the SUMMARY before Stage 3 rather than assuming it" is a correctness-critical mechanical instruction easy to miss in prose. Not a lint violation.
- risk: None immediate.
- fix: Optional — extract as a titled note block for scanability.
[INFO] WORKFLOW.md two-line addition is accurate, minimal, and well-placed — no findings.
Subagents
| Agent | Verdict |
|---|---|
| parity-checker | N/A |
| i18n-syncer | N/A |
| contract-aligner | N/A |
| security-reviewer | N/A |
Validation
| Check | Result |
|---|---|
| Lint | N/A — Markdown skill file |
| Type check | N/A |
| Tests | N/A |
| Build (api) | N/A |
What's good
- Thin orchestrator discipline upheld. Invokes
grill-me,/create-prd,/prd-interactive,/create-storiesby invocation name only — exactly the pattern/executesets. - GATE 2 reuse is explicitly guarded. "Do NOT auto-answer it, pre-confirm it, or suppress it" prevents the outer-orchestrator failure mode of silently passing the inner skill's gate.
- Routing table is clean and exhaustive. The
--cold/ non-empty-idea / empty-idea branching in Stage 0 has no overlap or gap. - Guardrails section is thorough. Covers all the shortcut failure modes: re-implementing PRD logic, double-grilling, running
/plan//implement, etc. --no-createdry-run path is explicit in both the flag table and GATE 2.
Recommendation
Two one-line prose fixes before merging:
- Remove the hardcoded Windows path in Stage 1 line 37 — change to simply: "Apply the
grill-meposture" (no filesystem path). - Tighten Stage 3 to reflect the
--no-createconditionality on Phase 6: "If--no-createwas NOT passed, it then proceeds to its own Phase 6."
Once those land, the skill is ready to merge.
Reviewed by /pr-review against rubric.md



What
Adds the
/featureorchestrator skill at.claude/skills/feature/SKILL.md— a thin chain that drives a rough idea through the full backlog pipeline so it becomes well-formed GitHub issues without hand-running each step.Flow (gated)
grill-me,/create-prd,/prd-interactive,/create-stories). No PRD or story logic is reimplemented; the chained skills own the templates, labels, and issue bodies./create-storiesPhase 6.1 verbatim — not re-spelled, not auto-answered.--no-createskips issue creation entirely./feature "<idea>" [--cold] [--milestone "MVP"] [--no-create].Also
One-line driven-shortcut pointer added to
WORKFLOW.mdunder the medium/large path; the manual steps stay documented.Validation
Markdown skill — no npm/dotnet. Static read-through confirms: frontmatter
name: feature+description, usage line + all flags, both gates present, Stages 2–3 invoke the real flows by name, zero.claude/commands/path references. Manual dry-run recommended (warm--no-create, gate-abort, edit-loop, cold-start).Dependencies / merge note
Depends on #206 (the command → skill migration); the chained flows are invoked by their stable invocation names, which survive that migration. Touches
WORKFLOW.md— may conflict with #206'sWORKFLOW.mdedit; resolve at merge. Merge after #206.Closes #208
🤖 Generated with Claude Code