bundles/github/skills/feature-intake/SKILL.md
Capture a client or stakeholder feature request, turn it into a planner-ready PRD epic with scoped sub-issues, check for duplicate work, and place approved issues on a GitHub Projects kanban. Use when a user invokes feature intake, asks to turn a rough client requirement into GitHub issues, or wants an idea written as a PRD and pushed to a board.
npx skillsauth add shipshitdev/library feature-intakeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Turn a rough client, sales, founder, or stakeholder requirement into a tracker artifact that agents can plan and implement without re-eliciting the same context. Create one parent PRD issue plus focused sub-issues unless the request is a single-layer change.
Inputs:
Outputs:
Creates/Modifies:
External Side Effects:
Confirmation Required:
Delegates To:
prd-writer for PRD structure and quality gatesprd-task-creator for issue and sub-issue creation mechanicsgh-project-board when the target board needs inspection or normalizationprd-quality-gate before marking the intake ready for planningCreate a small issue tree:
Use sub-issues to prevent dropped work. A full-stack feature normally needs at least:
[backend] for API, data model, business logic, jobs, integrations, auth, or
persistence.[frontend] for screens, state, routing, copy, forms, or user-visible flows.[e2e] for cross-layer wiring, contracts, and the test that proves the flow
works end to end.Allow a layer to be N/A only with a one-line reason in the parent PRD's
Layer Coverage section. If both backend and frontend are in scope, include an
e2e sub-issue.
Verify the target repository and GitHub auth before drafting:
gh auth status
gh repo view --json nameWithOwner,defaultBranchRef --jq '{repo:.nameWithOwner, default:.defaultBranchRef.name}'
git status --short --branch
If a GitHub Project target is known, inspect live project fields before assuming status or priority option names:
gh project view <project-number> --owner <owner> --format json
gh project field-list <project-number> --owner <owner> --format json
gh project item-list <project-number> --owner <owner> --limit 100 --format json
Use the repository's native board vocabulary. If the board is missing expected
Status or Priority fields, run gh-project-board before writing items.
Read the branch and dirty state so intake does not trample active work:
git status --short --branch
git branch --show-current
For read-only intake, dirty state is acceptable if reported. For workflows that require switching or pulling a branch, require a clean tree first. Never stash, reset, merge, rebase, or switch branches just to write intake unless the user explicitly asked for that repository workflow.
Search issues and the project board before drafting:
gh issue list --state all --limit 50 --search "<keywords>" --json number,state,labels,url,projectItems
Also search local planning and memory docs when available:
rg -n "<keywords>" .agents README.md docs 2>/dev/null
If a strong duplicate exists, recommend updating that issue. If nearby work
exists but the request is distinct, reference it in Dependencies or
Risks & Open Questions.
Prefer existing context over stakeholder interrogation:
.agents/memory/, product docs, roadmap docs, and recent issues.Ask questions only when the PRD would otherwise invent important facts. Ask no more than three focused questions at a time, and avoid implementation questions.
Cover these details:
If context is clear enough, draft with an explicit inference note:
I have enough context to draft this. I inferred the user, outcome, and initial
priority from existing repo context. I will keep uncertain assumptions in
Risks & Open Questions for confirmation.
Decide which slices are in scope before writing sub-issues:
| Layer | Mark IN when | Mark N/A when |
| --- | --- | --- |
| backend | APIs, data, jobs, auth, integrations, persistence, business rules change | Pure copy/static UI change |
| frontend | Any user-visible screen, form, state, route, or interaction changes | Internal job or backend-only operation |
| e2e | Frontend and backend must work together, or a critical workflow needs proof | Single-layer change with no integration path |
| docs/ops | Runbooks, migration notes, launch steps, support workflow, or monitoring are required | No operational handoff needed |
Default product features to backend + frontend + e2e unless the requirement is clearly narrower. Keep sub-issues small enough for one focused PR.
Testing bar (non-negotiable — encode in the PRD Verification Plan):
IN.Drop any single test type only with a one-line reason in Non-Functional Requirements; never silently. A pure copy/static change may scope to
coverage-only with that reason.
Use the issue body as the PRD. Do not add YAML frontmatter to issue bodies.
# PRD: <kebab-case-name>
## Executive Summary
<2-4 sentences: what this is, why now, and who benefits.>
## Problem Statement
<Concrete pain, missing capability, or customer promise. Name the user/workflow.>
## Goals
- <Measurable or verifiable goal>
## Non-Goals
- <Explicitly excluded scope>
## User Stories
- As a <role>, I want <capability> so that <outcome>.
**Acceptance:**
- WHEN <trigger> THE SYSTEM SHALL <observable response>.
## Functional Requirements
1. <Verifiable behavior, not implementation detail>
## Non-Functional Requirements
- <Only performance, accessibility, security, observability, or reliability requirements that matter>
## Acceptance Criteria
- WHEN <trigger> THE SYSTEM SHALL <observable response>.
- IF <failure or edge condition> THEN THE SYSTEM SHALL <handled response>.
- THE SYSTEM SHALL <invariant that must always hold>.
## Out of Scope
- <Boundary agents must not cross>
## Dependencies
- <Issue numbers, docs, services, packages, feature flags, or `None`>
## Layer Coverage
- **backend:** IN - sub-issue #<filled after creation> | or `N/A - <reason>`
- **frontend:** IN - sub-issue #<filled after creation> | or `N/A - <reason>`
- **e2e:** IN - sub-issue #<filled after creation> | or `N/A - <reason>`
- **docs/ops:** IN - sub-issue #<filled after creation> | or `N/A - <reason>`
## Sub-Issues
- [ ] `[backend]` <title> - #<n>
- [ ] `[frontend]` <title> - #<n>
- [ ] `[e2e]` <title> - #<n>
## Verification Plan
- integration tests: <boundaries covered; suites/files that must exist and pass>
- e2e tests: <workflow proven end to end; suite/file> | or `N/A - <reason>`
- coverage: ≥80% on added/changed code (<command/tool that reports it>)
- manual: <manual QA steps or stakeholder demo checks>
## Risks & Open Questions
- <Unresolved assumption or risk>
Each sub-issue should include:
[backend] boundaries, the e2e
test for [e2e], and the slice's share of the ≥80% coverage barUse titles like:
[backend] Add saved search automation API[frontend] Add saved search controls[e2e] Verify saved search workflowDo not create issues until the draft passes these checks:
None.WHEN/WHILE/WHERE/IF … THE SYSTEM SHALL …) and pass/fail.IN layer has a sub-issue.N/A layer has a reason.Risks & Open Questions.Show the parent and sub-issue draft. Wait for approval before writing to GitHub.
After approval, create the parent first, then sub-issues:
REPO_TMP="$(git rev-parse --show-toplevel)/.tmp"
mkdir -p "$REPO_TMP"
gh issue create --title "<short imperative title>" --body-file "$REPO_TMP/parent-prd.md" --label "type:feature"
gh issue create --title "[backend] <title>" --body-file "$REPO_TMP/backend.md" --label "type:feature"
Link sub-issues using the repository's supported GitHub sub-issue API or tracker convention. If native sub-issues are unavailable, link children in the parent body and each child body.
Add approved items to the configured project board and set native fields:
gh project item-add <project-number> --owner <owner> --url <issue-url>
Use live field IDs from gh project field-list and item IDs from
gh project item-list; do not hard-code project field IDs.
Return:
development
Coordinates a weekly engineering review of board accuracy, recent code changes, operational health, and scoped cleanup. Use for a recurring repository health review or a review of the last several days.
testing
Audits project board configuration and prepares explicitly requested setup, copy, or normalization changes while preserving the existing workflow and provider boundaries. Use when inspecting a board's fields, columns, scope, or configuration.
testing
Reconciles a project board with current work and delivery evidence, reports incomplete coverage and metadata gaps, and applies only approved provider-supported field changes. Use when auditing board drift, reviewing blocked work, or assessing upcoming delivery.
development
Walk through how a subsystem works. Use for "how does X work", code walkthroughs before changing something, and placement or ownership questions. Explains architecture, runtime flow, and onboarding mental models. Can critique architecture. Use why for motivation.