Skip to content

Add spec-driven product task workflow#3561

Merged
tom2drum merged 4 commits into
mainfrom
product-task-workflow
Jul 10, 2026
Merged

Add spec-driven product task workflow#3561
tom2drum merged 4 commits into
mainfrom
product-task-workflow

Conversation

@tom2drum

Copy link
Copy Markdown
Collaborator

Description and Related Issue(s)

Introduces a spec-driven workflow for working product tasks whose GitHub issues arrive underspecified (a title and a couple of links — e.g. #3537, #2909). The workflow fills the task's gaps through a structured interview, routes unanswerable questions to the responsible people via Slack, and executes the resulting spec one subtask at a time — explicitly separating what an agent may implement from what stays with a developer (final markup/styling against Figma mockups).

Entry point for the team: .agents/tasks/README.md.

Proposed Changes

  • Three new skills:
    • grill-the-task — research-first interview: fetches the issue, explores the codebase, curls live API samples, enumerates Figma mockups; runs mockup↔API sufficiency and field-propagation cross-checks; then grills the developer one question at a time and front-loads the executor skills' inputs into the spec.
    • to-spec — converts any conversation into a spec in .agents/tasks/ (or merges into an existing one); sends open questions to their owners in Slack (channel-first for product questions, in Russian), harvests replies back into the spec, and bootstraps the branch + draft PR.
    • implement-task — executes the spec one leaf subtask per run, inferring the spec from the branch name (issue-<number> / issue-<number>-step-<N> / task-dir slug); hands [human] subtasks over to the developer.
  • Supporting files: .agents/rules/delegation.mdc (living agent/human boundary, incl. the scaffold→style split and standing testing policy), .agents/TEAM.md (per-team contact roster + Slack routing channels), .agents/tasks/README.md (lifecycle doc), and the generic grilling interview skill promoted from a personal skill.
  • create-pr skill reworked into three modes: placeholder draft PR at spec time, finalize-draft into ready-for-review, and the classic create-right-away flow. The dependencies label now requires changes in actual dependency sections of package.json, not scripts.
  • Checks workflow: draft PRs are skipped (same gate as the skip checks label), checks run on ready_for_review, manual runs stay available via workflow_dispatch; .agents/** and .cursor/** added to paths-ignore.

No ENV variable changes.

Breaking or Incompatible Changes

None for the application. One CI behavior change: the Checks workflow no longer runs automatically on draft PRs — it runs when the PR is marked ready for review, and can always be triggered manually via workflow_dispatch.

Additional Information

Specs will accumulate in .agents/tasks/ (they merge together with their task's PR) and serve as precedent for future tasks. .agents/TEAM.md stores Slack member IDs deliberately — they are workspace-scoped identifiers, not credentials — to make question routing deterministic.

Checklist for PR author

  • I have tested these changes locally.
  • I added tests to cover any new functionality, following this guide
  • Whenever I fix a bug, I include a regression test to ensure that the bug does not reappear silently.
  • If I have added a feature or functionality that is not privacy-compliant (e.g., tracking, analytics, third-party services), I have disabled it for private mode.
  • If I have added, changed, renamed, or removed an environment variable
    • I updated the list of environment variables in the documentation
    • I made the necessary changes to the validator script according to the guide
    • I added "ENVs" label to this pull request

tom2drum and others added 4 commits July 10, 2026 17:58
Introduce a three-skill workflow for working product tasks whose GitHub
issues arrive underspecified:

- grill-the-task: research-first interview (issue, codebase, live API
  samples, Figma mockups) that fills the task's gaps with the developer
  and front-loads the executor skills' inputs
- to-spec: converts any conversation into a spec in .agents/tasks/,
  merges updates, and runs the Slack round-trip for open questions
  (send grouped by owner, harvest replies, follow up)
- implement-task: executes the spec one subtask per run, inferring the
  spec from the issue-<number> branch convention, handing styling work
  to the developer per the delegation boundary

Supporting pieces: .agents/rules/delegation.mdc (living agent/human
boundary incl. the scaffold->style split and testing policy),
.agents/TEAM.md (per-team contact roster + Slack routing channels),
.agents/tasks/README.md (team-facing lifecycle doc), and the generic
grilling interview skill promoted from a personal skill.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Encode the draft-PR-first policy across the workflow: to-spec now ends
by bootstrapping the branch (issue-<number>, issue-<number>-step-<N>,
or the task-dir slug for ad-hoc specs), proposing the spec commit, and
suggesting a draft PR — each with explicit developer approval. For
ad-hoc ideas the draft PR doubles as a parking spot. implement-task
infers the spec from any of the branch conventions and nudges to flip
the PR to ready when the last box is checked.

The Checks workflow now skips draft PRs entirely (same gate as the
"skip checks" label), runs on ready_for_review, and stays manually
runnable via workflow_dispatch. Spec-only changes are also excluded
via .agents/** in paths-ignore.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three modes: draft placeholder at spec time (goal + spec link instead
of the PR template — nothing is implemented yet), finalize-draft
(rewrite the body from the real diff, derive labels, gh pr ready),
and the classic create-right-away flow for work done outside the task
workflow. implement-task's end-of-task nudge now points at the
finalize mode.

Also tighten the dependencies label: only actual dependency sections
of package.json count, not scripts or other fields.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Apply skill-writing discipline to the product-task workflow skills:

- grill-the-task, implement-task: collapse model-facing trigger
  descriptions to human-facing one-liners (both are user-invoked and
  pay no context load); add checkable completion criteria to the
  research and interview steps; fix line-wrap and typos
- implement-task: branch conventions + inference now live only in the
  Branch model section
- to-spec: draft-PR rationale deduplicated to .agents/tasks/README.md;
  completion criteria for the harvest and outreach steps
- create-pr: trim body detail from the description

grilling is untouched: seven battle-tested lines.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. To trigger a review, include @coderabbitai review in the PR description. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ca001927-2e06-42db-8f55-1bf0d79cf655

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tom2drum tom2drum merged commit 5bcf50f into main Jul 10, 2026
11 checks passed
@tom2drum tom2drum deleted the product-task-workflow branch July 10, 2026 17:00
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.

1 participant