Skip to content

feat(skills): /execute — issue → prime → plan → implement, gated (#207) - #237

Merged
thomasluizon merged 2 commits into
mainfrom
feature/207-execute-skill
Jun 19, 2026
Merged

feat(skills): /execute — issue → prime → plan → implement, gated (#207)#237
thomasluizon merged 2 commits into
mainfrom
feature/207-execute-skill

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

What

Adds .claude/skills/execute/SKILL.md — the /execute <issue> orchestrator. A thin conductor that drives one issue from its number to a PR by chaining the existing pipeline, with a hard confirmation gate at every stage boundary.

/prime <issue>  →  [GATE 1]  →  grill-me  →  [GATE 2]  →  /plan <issue>  →  [GATE 3: approve]  →  /implement <plan-path>
 (load only)                  (questions)                 (writes plan)                          (owns its own push gate)

Design

  • Thin, not a re-spec. References /prime, grill-me, /plan, and /implement by invocation name only — re-implements none of their logic. The only hardcoded coupling is the stable single-issue plan path .claude/plans/issue-<N>.plan.md.
  • /prime stays load-only (AC3). Stage 1 stops at the prime summary; the only path forward is GATE 1. Cites the standing feedback_prime_loads_context_only.md rule.
  • Hard gates, default-deny (AC2). Three blocking gates (post-prime, post-grill, post-plan). On no/ambiguous response: do nothing, re-ask. GATE 3 requires an explicit approverevise <feedback> loops back to /plan, never falls through to implement.
  • No double push gate. /execute owns gates 1–3; the push/PR confirmation inside /implement (its Phase 7) stays the final checkpoint and is not duplicated here.
  • Single-issue by contract. ≥2 numeric tokens → STOP and redirect to the existing /prime <N…> parallel multi-issue flow; 0 → ask for an issue number.

Frontmatter

SKILL-style name: execute + description: (so it lists in the skill menu and is invocable via the Skill tool), plus an argument-hint: <issue-number> line for discoverability.

Dependency & merge order

Depends on #206 (which migrates /prime, /plan, /implement, and grill-me into skill form). This PR references those by their stable invocation names and should merge after #206.

Validation

No automated tests — skills carry no unit-test harness and the integration/E2E suites were removed. Validated by inspection: file at the mandated path, name: execute, frontmatter parses, references the pipeline by invocation name (no .claude/commands/ path refs), and a coherent 3-gate flow that maps 1:1 to AC1/AC2/AC3. A manual dry-run on a small real issue is recommended.

Closes #207

🤖 Generated with Claude Code

Add .claude/skills/execute/SKILL.md, a thin conductor that chains the
existing pipeline for ONE issue: /prime (load only) -> grill-me ->
/plan -> [HARD GATE: approve] -> /implement. Every stage boundary is a
blocking confirmation gate; nothing auto-advances and nothing implements
without an explicit approve. References the chained commands and skill by
invocation name; re-implements none of their logic.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
orbit-ui-mobile-web Ignored Ignored Jun 19, 2026 8:23pm

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean addition. The /execute skill is a well-designed thin conductor — it references /prime, grill-me, /plan, and /implement by invocation name without reimplementing any of their logic, the three hard gates are internally consistent with explicit default-deny semantics, and the 0/1/≥2 input-token routing is correct. No parity concern (tooling-only change), no dead code, no workarounds, no hard-rule violations. Dependency on #206 is called out clearly. Good to merge after #206 lands.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review: PR #237

Scope: PR #237 — feat(skills): /execute — issue → prime → plan → implement, gated
Recommendation: NEEDS WORK

Summary

PR #237 adds `.claude/skills/execute/SKILL.md` — a thin conductor skill that chains `/prime` → `grill-me` → `/plan` → `/implement` with a hard blocking gate at every stage boundary. The design intent is sound and the gate logic is well-specified. Two Medium findings need resolution: `grill-me` is not present as a registered skill in the current skills directory (making Stage 2 unresolvable unless it ships with or before this PR), and the GATE 2 exit condition is ambiguously specified in the prose vs the response table. All other dimensions are N/A or clean.

Findings

Critical

None.

High

None.

Medium

[MEDIUM] grill-me skill does not exist in the skills directory
· dimension: Correctness (#1)
· location: `.claude/skills/execute/SKILL.md:45-47`
· issue: Stage 2 instructs the model to "invoke the `grill-me` skill against the primed issue context," but `grill-me` does not appear in `.claude/skills/`. The current registered skills are `prime`, `plan`, `implement`, `validate`, `pr-review`, `add-`, `create-`, `android-generate`, and `prd-interactive`. The PR body states a dependency on #206 for migrating `grill-me` to skill form, but #206 does not resolve as an open PR in this repo — the recent merge #236 (which migrated slash-commands to skills) does not appear to have included a `grill-me` skill file.
· risk: Any invocation of `/execute` that reaches Stage 2 will stall or confuse the model. The core differentiating value of `/execute` (gated grilling before planning) is broken from day one.
· fix: Either (a) ship a `grill-me` skill at `.claude/skills/grill-me/SKILL.md` in this PR or confirm it landed in #236, (b) update Stage 2 to reference the correct registered name if it was renamed, or (c) inline a minimal grill interaction directly in `/execute` as a fallback. Update the PR description to confirm the dependency is satisfied before merge.
· reference: CLAUDE.md rule 1 (root-cause, not workaround); CLAUDE.md rule 8 (surface errors at boundaries — a missing dependency is a hard boundary failure)

[MEDIUM] GATE 2 exit condition: prose and table contradict each other
· dimension: Correctness (#1)
· location: `.claude/skills/execute/SKILL.md:47, 85-92`
· issue: Prose says "The user exits the grill loop explicitly. That exit is GATE 2" — implying exiting `grill-me` automatically constitutes GATE 2 `proceed`. But the GATE 2 response table then requires an explicit `proceed` / `more` / `abort`. These are contradictory: if finishing grilling is the gate, `more` in the table is unreachable; if the gate requires an explicit `proceed`, the prose is wrong.
· risk: The model may interpret finishing grilling as automatic `proceed` and skip the gate — violating the hard-gate, default-deny invariant that is the design's core guarantee. A user who expects to review the grilling summary before planning gets no checkpoint.
· fix: Align prose and table. Recommended: change the prose to "When `grill-me` ends, `/execute` presents the resolved-decisions summary as GATE 2 and waits for an explicit response." Remove the ambiguous "That exit is GATE 2" sentence.
· reference: CLAUDE.md rule 1 (the ambiguity is in the spec — fix it there)

Low / Info

[INFO] Invocation style inconsistency — `grill-me` vs `/slash` prefix
· dimension: Correctness (#1)
· location: `.claude/skills/execute/SKILL.md:45-47`
· issue: `/prime`, `/plan`, and `/implement` are referenced with their slash prefix throughout. `grill-me` appears without a slash. Skills registered in `.claude/skills/` are invoked via the Skill tool. An inconsistent reference style (once as bare name, once as slash-prefixed) may cause the model to use a different invocation path than intended.
· risk: Low — cosmetic unless `grill-me` has a different invocation mechanism than the other three.
· fix: Decide on `grill-me` vs `/grill-me` and use it consistently. Match whatever invocation style the skill itself documents.
· reference: Internal consistency

[INFO] Stage 4 "(path-based mode)" annotation is correct — no action needed
· dimension: Correctness (#1)
· location: `.claude/skills/execute/SKILL.md:59`
· issue: The annotation "(path-based mode)" on the `/implement` call is accurate: `.claude/plans/issue-.plan.md` is a single non-numeric whitespace-delimited argument, so implement's mode detection correctly selects path-based (0 numeric tokens). Note for reviewers only.
· risk: None.
· fix: No action required.
· reference: Cross-check against `/implement` mode detection table

Subagents

Agent Verdict
parity-checker N/A — change is under `.claude/skills/`, not `apps/*`
i18n-syncer N/A — no user-facing strings added
contract-aligner N/A — no types, endpoints, or DTOs changed
security-reviewer N/A — no `orbit-api` code changed

Validation

Check Result
Lint N/A — `.md` file; no TypeScript/C# to lint
Type check N/A — no source files changed
Tests N/A — skills carry no unit-test harness (noted in PR body)
Build (api) N/A — no API changes

What's good

  • Thin conductor by design. Imports no logic from the four commands it chains and explicitly forbids re-describing them. Changes to `/prime`, `/plan`, etc. apply automatically.
  • Hard gate, default-deny throughout. All three gates specify that no response or ambiguous response causes a re-ask, never an auto-advance. GATE 3's explicit `approve`-only entry to implement is especially clean.
  • Input validation table is precise. The 0 / 1 / ≥2 token table with the STOP for multi-issue correctly routes to the existing parallel flow without trying to replicate it.
  • No double push gate. Phase 7 of `/implement` is the final checkpoint; `/execute` deliberately delegates it rather than duplicating.
  • Frontmatter is complete. `name`, `description`, and `argument-hint` are all present and formatted for skill-menu discoverability.
  • Abort handling at every gate. Each gate specifies the stopped stage and how to resume — good UX for a multi-stage pipeline.

Recommendation

Two Medium findings need resolution before merge:

  1. Confirm `grill-me` exists as a registered skill (or ship it in this PR). If it was supposed to land in #236 and didn't, a `.claude/skills/grill-me/SKILL.md` file is the fix. If it was deferred, the Stage 2 description must gracefully handle its absence.

  2. Resolve the GATE 2 prose vs table contradiction. Make the gate always explicit and update the prose to match the table.

The Low/Info items are optional cleanup. Once the two Mediums are addressed, this is clean to merge.

🤖 Generated with Claude Code

@sonarqubecloud

Copy link
Copy Markdown

@thomasluizon
thomasluizon merged commit 6377fea into main Jun 19, 2026
8 checks passed
@thomasluizon
thomasluizon deleted the feature/207-execute-skill branch June 19, 2026 20:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build /execute skill (issue → prime → plan → implement, gated)

1 participant