create-request
Create/Update Request Skill
Trigger
- Keywords: create request, new request, write request, build request, update request, sync progress, scan requests, request status, incomplete requests, request dashboard
Mode Overview
flowchart LR
A[/create-request] --> B{Mode?}
B -->|--status| C[Scan: Discover → Parse → Filter → Report]
B -->|--update-all| F[Batch Update: Scan → Git Verify → Batch Edit → Report]
B -->|--update| D[Update: Load → Analyze → Map → Update → Report]
B -->|default| E[Create: Gather → Explore → Generate → Confirm]
Modes
| Mode | Trigger Condition | Action |
|---|---|---|
create |
No file specified / new request | Gather info -> Fill template -> Create file |
update |
File specified / update request | Read current state -> Check implementation -> Update progress |
update-all |
--update-all flag |
Batch scan → git verify → update all stale docs → report |
scan |
--status flag |
Scan all requests -> Parse metadata -> Filter incomplete -> Report |
Arguments
| Flag | Applies To | Description |
|---|---|---|
--verify-ac |
--update (single) |
Dispatch Explore agent to verify AC completion with evidence (file:line). Supports auto-detected path via feature context 5-level cascade. Not available with --update-all. |
When NOT to Use
- Feature-level requirements analysis (use
/req-analyze— produces1-requirements.md, a Phase 1 lifecycle doc for problem-space analysis; see Relationship section below) - Viewing request structure (use request-tracking)
- Writing tech spec (use /tech-spec)
- Code development (use feature-dev)
Relationship with /req-analyze
Request tickets are work breakdown units derived from /tech-spec, not requirements documents themselves. They live in a different document class per @rules/docs-numbering.md.
| Dimension | /create-request → requests/YYYY-MM-DD-*.md |
/req-analyze → 1-requirements.md |
|---|---|---|
| Doc class | Request ticket (date-prefixed, non-lifecycle — per @rules/docs-numbering.md) |
Lifecycle (Phase 1, numeric prefix) |
| Count per feature | Many (one per task) | One (upsert) |
| Position in workflow | After /tech-spec (execution phase) |
Before /tech-spec (design phase) |
| Content focus | Execution — Status, Progress, AC checklist, Related Files | Problem space — 5-Why, FR/NFR, MoSCoW, stakeholders |
| Granularity | Single task (AC ≤ 8) | Feature-wide |
| Update pattern | Status tracking (scan / update / update-all / --verify-ac) |
Document upsert |
| Audience | Executors, progress trackers | Designers, decision-makers |
Workflow ordering
/req-analyze → /tech-spec → /create-request → /feature-dev
(Phase 1) (Phase 2) (ticket per task) (implement)
A request ticket references its parent /tech-spec for technical detail and may optionally link to 1-requirements.md for problem-space rationale (when /req-analyze was run).
Anti-patterns to avoid
| Anti-pattern | Correct approach |
|---|---|
| Writing 5-Why / stakeholder analysis inside a request ticket | Put it in 1-requirements.md via /req-analyze; ticket just references it |
Adding ## Progress / ## Status tables to 1-requirements.md |
Progress tracking belongs in request tickets, not the lifecycle requirements doc |
| Creating one request ticket per whole feature (AC > 8) | Split by layer or functional area; see Granularity Guide in references/template.md |
Treating 1-requirements.md as a prerequisite for creating requests |
It is advisory-only; requests work standalone when only tech-spec exists |
Create Mode Workflow
Phase 1: Gather -> Collect feature, title, priority, requirements
Phase 1.5a: Quick -> AC count + layer keyword scan (pre-Explore)
Phase 2: Explore -> Search related code + tech specs
Phase 1.5b: Refined -> Layer mixing (Related Files) + scope breadth + WBS (post-Explore)
Phase 3: Generate -> Fill template + create file(s)
Phase 4: Confirm -> Display result + suggest next steps
Phase 1.5: Granularity Check
Assess whether the request should be split into multiple focused tickets. This runs in two passes to balance early detection with accurate analysis.
Signal Detection
| Signal | Detection | Weight |
|---|---|---|
| AC count > 8 | Count - [ ] items. Exclude quality-gate ACs matching: /codex-review-fast, /codex-review-doc, /codex-review, /precommit, /precommit-fast, /pr-review |
Primary |
| Layer mixing | 1.5a: keyword scan for rules/, hooks/, scripts/ in requirements text. 1.5b: classify Related Files into behavior-layer (.md rules/skills) vs code-layer (.sh/.js hooks/scripts) |
Primary |
| Scope breadth | Requirements has 3+ functionally independent areas | Primary |
| WBS groups ≥ 2 | Tech spec has Work Breakdown heading with 2+ independent task groups (secondary, high-confidence only) |
Secondary (×0.5) |
| Effort > 3 days | Tech spec WBS has multiple M/L items | Secondary (×0.5) |
Decision Logic
signal_count = primary_count + 0.5 × secondary_count
< 2 → proceed as single request (no suggestion)
≥ 2 → suggest split (advisory AskUserQuestion)
≥ 3 → strongly recommend split
Split Suggestion
When triggered, use AskUserQuestion:
## Granularity Assessment
This request has {N} acceptance criteria (target: ≤8) and {layer_info}.
Suggested split:
1. {Title A} — {scope A} ({AC_count_A} AC)
2. {Title B} — {scope B} ({AC_count_B} AC)
Options:
- "Split into {N} requests" (Recommended)
- "Keep as 1 request"
Split by: layer (behavior vs code) if detected, then functional area if scope breadth detected, then balanced AC groups as fallback.
Sibling Request Output
When user accepts split, create indexed files: YYYY-MM-DD-{title-slug}-r1.md, ...-r2.md, etc. (e.g., 2026-03-18-auth-fix-r1.md, 2026-03-18-auth-fix-r2.md). Each gets its own AC subset (target ≤8), scoped Related Files, and conditional > **Depends On**: header if dependency exists between siblings.
Create Mode: Interaction
If incomplete info, ask:
1. Feature area: Which feature? (e.g., auth, billing, notifications)
2. Title: Brief description
3. Priority: P0 (urgent) / P1 (high) / P2 (medium)
4. Background: Why is this needed?
5. Requirements: What needs to be done? (list)
6. Acceptance criteria: How do we know it's done?
Update Mode Workflow
Path resolution: --update supports three forms:
| Form | Behavior |
|---|---|
--update <path> |
Use explicit path (must match docs/features/*/requests/*.md) |
--update (no path) |
Auto-detect from feature context (see references/feature-context-resolution.md) |
--update <keyword> |
Resolve feature key, then find active request(s) |
Auto-detection logic (when no explicit path):
- Resolve feature context using 5-level cascade (
node scripts/resolve-feature-cli.js) - Scan
docs/features/<key>/requests/*.mdfor incomplete requests (Status not in[Completed, Done, Superseded]) - If exactly 1 active request → auto-select
- If multiple active requests → AskUserQuestion with numbered list
- If 0 active requests → offer to create new via create mode
- If feature not resolved → Gate: Need Human
Phase 1: Load -> Read existing request document
Phase 2: Analyze -> Analyze Related Files + git changes
Phase 2.5: Verify -> (--verify-ac only) Agent-based AC verification
Phase 3: Map -> Compare implementation with Acceptance Criteria
Phase 4: Update -> Update Progress / Status / Checkboxes
Phase 5: Report -> Output change summary
Phase 2: Analyze Implementation Progress
# Get changes for Related Files from request document
git log --oneline --since="<created_date>" -- <related_files>
# Check test status
grep -rE "describe|it\(" test/ --include="*<feature>*"
# Check review status
git log --oneline --grep="codex-review" -- <related_files>
Phase 2.5: AC Verification Agent (--verify-ac only)
Dispatched when --verify-ac flag is present on single-request --update. Supports auto-detected path via feature context 5-level cascade. Skipped otherwise (default path unchanged, <10 sec).
Input: AC_LIST from ## Acceptance Criteria (filter quality-gate ACs per codex-code-review Step 1.5 pattern). RELATED_FILES from ## Related Files table.
Agent({
description: "Verify AC completion for <feature>",
subagent_type: "Explore",
prompt: `AC verification specialist.
AC_LIST: ${AC_LIST}
RELATED_FILES: ${RELATED_FILES}
For each AC: read code, verify implementation.
Output per AC:
- Status: Complete | Partial | Not Found | Inconclusive
- Evidence: file:line references
- Confidence: High | Medium | Low
- Gap (if Partial): what is missing`
})
Timeout: 60 sec hard limit. Unverified ACs on timeout marked Inconclusive.
Graceful degradation: Agent dispatch fails → warn user, fall back to git-based heuristic (Phase 2 results).
Confidence-to-status mapping:
| Condition | Status |
|---|---|
All AC Complete with High confidence |
Completed |
All AC checked but any Medium/Low/Inconclusive |
Candidate Complete + verification summary in Progress.Note |
Some AC Not Found or Partial |
In Progress |
Phase 3: Progress Mapping Rules
| Implementation Status | Progress Update |
|---|---|
| Related Files have commits | Development -> In Progress |
| Test files added/modified | Testing -> In Progress |
/codex-review-fast passed |
Development -> Done |
/precommit passed |
Testing -> Done |
| All Acceptance Criteria checked | Acceptance -> Done |
Phase 4: Auto-Update Items
| Section | Update Logic |
|---|---|
Status |
Canonical lifecycle: Pending → In Progress → Candidate Complete → Completed. Candidate Complete = all AC checked but not closure-grade verified (either heuristic-only, or --verify-ac with non-High confidence). Only --verify-ac with all-High confidence sets Completed. Normalize variants: In Development/In Dev → In Progress; Done → Completed |
Progress table |
Update each phase status based on git changes |
Acceptance Criteria |
Check checkboxes based on implementation/test results |
Progress.Note |
Add latest commit message summary |
Update Mode: Interaction
If confirmation needed, ask:
1. Confirm target request document path
2. Any manually completed items to check off?
3. Any blocked items to mark?
Scan Mode Workflow
Phase 1: Discover -> Glob docs/features/*/requests/*.md (exclude archived/)
Phase 2: Parse -> Extract Status, Priority, Created, AC progress from each doc
Phase 3: Filter -> Keep incomplete (Status ≠ Completed, Done, Superseded)
Phase 4: Report -> Group by status, sort by priority then date, output markdown
Phase 1: Discovery
Glob: docs/features/*/requests/*.md
Exclude: docs/features/*/requests/archived/*.md
Count total, active, and archived separately.
Phase 2: Metadata Parsing
Support two metadata formats (try in order, use first match):
| Format | Status Pattern | Priority Pattern | Created Pattern |
|---|---|---|---|
| Blockquote | > **Status**: <value> |
> **Priority**: <value> |
> **Created**: <value> |
| Table | ^| Status | **?<value>**? | (anchor to line start, metadata section only — first 15 lines) |
^| Priority | <value> | |
^| Created | <value> | |
Fallback: If metadata missing, extract date from filename (YYYY-MM-DD-*), default status to unknown, priority to --.
AC Progress: Count - [x] (checked) vs total - [ ] + - [x] in ## Acceptance Criteria section.
Feature name: Extract from path — second segment after docs/features/ (e.g., docs/features/auth/requests/... → auth).
Phase 3: Filter & Classify
| Status | Classification | Include in Report |
|---|---|---|
| Completed | Done | No |
| Done | Done | No |
| Superseded | Done | No |
| In Progress / In Development / In Dev | Active | Yes |
| Candidate Complete | Active (needs verification) | Yes — group after In Progress |
| Pending | Backlog | Yes |
| Design / Proposed | Pre-work | Yes |
| unknown | Backlog (grouped with Pending) | Yes |
Stale detection: Pending requests with Created date > 30 days ago → mark [stale].
Phase 4: Report Format
Console-only markdown output (no file creation). Group by status in actionability order:
- In Progress — active work, highest actionability
- Candidate Complete — heuristic-complete, needs
--verify-acconfirmation - Pending — backlog, includes stale detection
- Design / Proposed — pre-implementation
Each group as a table with columns: #, Request, Feature, Priority, Created, AC, Path.
Pending group adds a Stale column.
Sort order within each group: Priority descending (P0 > P1 > P2 > --), then Created ascending (oldest first).
Bottom summary table: status counts + average age (days since Created).
Summary line at top: N incomplete / M total (K archived excluded).
Batch Update Mode (--update-all)
Scan all incomplete requests, cross-reference with git history, and batch-update docs where implementation evidence exists. This automates what would otherwise require running --update on each doc individually.
Phase 1: Discover -> Reuse Scan Mode Phase 1-3 to find incomplete docs
Phase 2: Verify -> For each doc, check git log for Related Files commits
Phase 3: Classify -> Sort into: updatable (has commits) vs unchanged (no commits)
Phase 4: Batch Edit -> Update Status, AC checkboxes, Progress table for each updatable doc
Phase 5: Report -> Output change summary table
Phase 2: Git Verification
For each incomplete request doc, extract the feature name from path and search for evidence:
Priority: Use Related Files from request doc when available (most accurate). Fall back to feature slug heuristic only when Related Files section is absent.
# Priority 1: Use Related Files from request doc (if present)
# Parse "## Related Files" table → extract file paths → git log per path
# Priority 2: Feature slug heuristic (fallback)
git log --oneline --all -- skills/<feature>/ | head -5
Exclude docs-only commits: Filter out commits that only touch docs/ paths — these are doc-sync commits, not implementation evidence. A valid evidence commit must touch at least one non-docs file.
Phase 3: Classification
| Category | Condition | Action |
|---|---|---|
| ALL_CHECKED | AC all [x] but Status ≠ Completed/Candidate Complete |
Update Status → Candidate Complete (heuristic-only, not Completed) |
| HAS_COMMITS | Git commits exist for Related Files | Read doc → verify AC → update |
| LEGACY_METADATA | No blockquote Status (table format or missing) | Check table format; if already Completed → skip |
| NO_EVIDENCE | No git commits, AC unchecked | Skip (report as unchanged) |
Phase 4: Batch Edit Rules
For each updatable doc:
- Status: If all AC checked (heuristic) →
Candidate Complete. If some AC checked →In Progress. Only--verify-ac(single update) can setCompleted. - AC checkboxes: Cross-reference git diff to determine which ACs are met. Only check ACs with clear implementation evidence.
- Progress table: Update phase statuses based on commits found.
- Missing metadata: Add blockquote metadata header if doc only has table format or no metadata.
Phase 5: Report Format
## Batch Update Report
| # | Request | Feature | Before | After | Changes |
|---|---------|---------|--------|-------|---------|
| 1 | Bug-fix redesign | bug-fix-redesign | Pending 0/14 | Candidate Complete 14/14 | Status + AC + Progress |
| 2 | Safe-remove | safe-remove | Pending 0/12 | Candidate Complete 12/12 | Status + AC |
| 3 | Multi-ecosystem | multi-ecosystem | Pending 0/23 | Pending 0/23 | (no changes — no commits) |
**Updated**: N / **Unchanged**: N / **Total scanned**: N
File Naming
Format: YYYY-MM-DD-kebab-case-title.md
Location: docs/features/{feature}/requests/
Output
- Request document at
docs/features/<feature>/requests/YYYY-MM-DD-<title>.md - Sections: Background, Requirements, Scope, Related Files, Acceptance Criteria, Progress, References
- Status: New or Updated
Verification
- File naming follows convention
- All template sections are filled
- Related file links are correct
- Acceptance criteria use checkboxes
After Creation
Request tickets are created after /tech-spec exists (see Relationship section). Suggest execution-oriented next steps:
/feature-dev— Start implementation following the ticket's Acceptance Criteria/verify— Run tests after implementation/create-request --update— Sync progress as work completes
Exception: If the ticket was created before a tech spec exists (emergency or exploratory work), consider running /tech-spec first to capture the technical design the ticket will execute against.
References
references/template.md- Request template + naming convention
Related Skills
| Skill | Purpose |
|---|---|
request-tracking |
Request structure knowledge base |
tech-spec |
Tech spec writing |
feature-dev |
Development workflow |
Examples
Create Mode
Input: /create-request Feature: Auth Title: Fix validation Priority: P1
Action: Explore related code -> Fill template -> Create file -> Suggest next steps
Input: Create a request document
Action: Ask for required info -> Explore -> Create -> Confirm
Update Mode
Input: /create-request --update docs/features/auth/requests/2026-01-23-fix-login-validation.md
Action: Read request -> Analyze git changes -> Update Progress -> Output summary
Input: Update request progress
Action: Identify request from context -> Analyze implementation -> Auto-update -> Confirm
Input: (after development complete) Sync request document
Action:
1. Read Related Files
2. git log to check changes
3. Update: Development unchecked -> done, Testing unchecked -> in progress
4. Check completed Acceptance Criteria
5. Status: Pending -> In Progress
More from sd0xdev/sd0x-dev-flow
statusline-config
Customize Claude Code statusline. Use when: user says 'statusline', 'status line', 'customize statusline', 'modify statusline', 'statusline settings', 'statusline theme', 'change theme', 'color scheme', wants to add/remove/change segments (cost, git, model, context), switch color themes (catppuccin, dracula, nord), or asks what can be shown in the statusline.
52tech-spec
Tech spec generation and review. Use when: designing features, writing specs, spec review. Not for: requirements analysis (use req-analyze), implementation (use feature-dev), architecture advice (use codex-architect). Output: numbered tech spec document.
45codex-brainstorm
Adversarial brainstorming via Claude+Codex debate. Use when: exploring solutions, feasibility analysis, exhaustive enumeration. Not for: implementation (use feature-dev), architecture only (use codex-architect). Output: Nash equilibrium consensus + action items.
7security-review
Security review via Codex MCP. Use when: OWASP Top 10 audit, dependency vulnerability check, security-sensitive changes. Not for: code review (use codex-code-review), test review (use test-review). Output: security findings + audit report.
7test-review
Test coverage review via Codex MCP. Use when: reviewing test sufficiency, identifying coverage gaps, test quality audit. Not for: generating tests (use codex-test-gen), code review (use codex-code-review). Output: coverage analysis + gap report.
7post-dev-test
Post-development test completion. Use when: checking test coverage after feature-dev, writing missing integration/e2e tests. Not for: unit test generation (use codex-test-gen), test review (use test-review). Output: test files + coverage report.
6