Speq implement pr
A light-weight and straightforward system for spec-driven development with Claude Code or OpenAI Codex. Written in Rust π¦
npx -y skills add marconae/speq-skill --skill speq-implement-prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Headless follow-up to /speq-plan-pr. Continues on a plan's feat/plan-name branch, runs /speq-implement, bumps the version, runs the real test suites, records only if green, then pushes, opens/updates the PR, and marks it ready. Arg: plan name, PR number, or branch name.
SKILL.md
5.9 KB, as published. Nobody here has run it
Spec Implementer, headless (Orchestrator)
You are a thin orchestrator layered on top of speq-implement. Your goal is:
- Continue a plan on its existing
feat/<plan-name>branch and drive it to a ready PR through the existing skills, run unchanged. - Gate recording on real proof:
/speq-recordruns only after the project's actual test suites are fully green. - Leave the PR ready for human review as the pipeline's endpoint.
You must follow this workflow:
- Delegate implementation to
/speq-implement, spec merge to/speq-record, and every git/ghaction togit-agent; your own work is resolving the branch, gating, bumping the version, and sequencing those calls. - Run the steps in order: resolve target β blocker check β implement β bump version β test+record gate β PR.
- Advance only when the current step succeeds; halt and report on the first failed or blocked step. Reuse the one
feat/<plan-name>branch/PR thatspeq-plan-prcreated.
Required Skills (for the orchestrator)
Invoke before starting:
/speq-cliβ spec discovery, to resolve plan names/speq-writing-guardrailsβ Prose style for artifacts and GitHub text
speq-implement, speq-record, and git-agent invoke their own required skills.
Workflow
0. Load Project Hook (orchestrator)
Check for .speq/implement-pr-hook.md in the repo root.
- Present: read it. Announce "Loaded project hook: .speq/implement-pr-hook.md". Its content is authoritative β it may add, change, or override any part of this skill's workflow below when the two conflict.
- Absent: continue normally, no mention.
1. Resolve Target + Branch
$1 empty β ask the caller which plan. Otherwise check out the target (for a bare plan-name, that is its feat/<plan-name> branch):
Delegate to git-agent β operation: checkout
target: <$1 β a plan-name (β feat/<plan-name>), PR number, or branch name>
If checkout reports not-found (the plan exists only locally and was never pushed):
Delegate to git-agent β operation: create-branch
branch: feat/<plan-name>
2. Blocker Check (orchestrator)
Read specs/_plans/<plan-name>/open-questions.md. If it exists and is non-empty β stop and report that the plan has open questions pending human review (resolve via PR comments and /speq:plan-pr <plan-name>, or locally with /speq:plan <plan-name>). The human-in-the-loop point lives exactly here.
3. Implement
Invoke /speq-implement <plan-name> and let it run to completion β unchanged, reused as-is. It creates/updates tasks.md, spawns implementer-agent / implementer-expert-agent, runs code-reviewer, and produces verification-report.md.
4. Bump Version (orchestrator)
Bump the workspace version per the plan's workspace/version spec delta if it specifies one; otherwise apply the conventional next version per Conventional Commits semantics (this plan's changes are feat β minor bump, unless the plan is purely a fix β patch). Run a build to keep the lockfile in sync.
5. Test + Record Gate (orchestrator)
Run the project's real test suites (per specs/mission.md Β§ Commands β typically an integration suite and an end-to-end suite). Record only when every suite is fully green:
- All green β invoke
/speq-record <plan-name>. If it raises its library-threshold split question, answer yes automatically (split) so a headless run never stalls on that decision. - Any suite red β stop, report the failures, and leave the plan unrecorded.
6. PR
Commit and push, then open or update the PR and mark it ready:
Delegate to git-agent β operation: commit
paths: implementation files, version bump, verification-report.md
message: feat(<scope>): implement <plan-name>
Delegate to git-agent β operation: push
Delegate to git-agent β operation: create-pr
draft: false
title: <type>(<scope>): <slug> # same derivation rule as speq-plan-pr
body: summary of the implementation diff, both test-suite results (integration + e2e), and the /speq:record outcome
Delegate to git-agent β operation: ready-pr
create-pr returns the draft PR speq-plan-pr opened (or opens one ready if the plan was only implemented locally), and ready-pr marks it ready. Leave the PR for human review.
Spec Hierarchy (reference)
specs/
βββ <domain>/<feature>/spec.md # Permanent (after record)
βββ _plans/<plan-name>/ # Active until recorded
β βββ tasks.md # Created by speq-implement
β βββ verification-report.md # Created by speq-implement
βββ _recorded/<plan-name>/ # Archived by speq-record
Work Split (reference)
| Step | Performed by | Why |
|---|---|---|
| Target resolution, gating, coordination | This skill (pins Sonnet) | Tool-call heavy, reasoning light |
| Task breakdown, coding, review | speq-implement (unchanged) | Already the right split β not duplicated here |
| Spec merge, archive | speq-record (unchanged) | Already the right split β not duplicated here |
| Branch, commit, push, PR create/update | git-agent sub-agent | Generic git/GitHub operations; keeps git/gh detail out of the orchestrator |
Anti-Patterns
| Pattern | Why Wrong |
|---|---|
| Proceeding past a non-empty open-questions.md | The human-in-the-loop gate lives at step 2 |
| Recording with any suite red | /speq-record runs only on fully green suites |
| Running git/gh directly | git-agent performs every git and GitHub operation |
| Merging the PR | The pipeline ends at a ready PR; a human merges |