بنقرة واحدة
speckit-checklist
Generate a custom checklist for the current feature based on user requirements.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Generate a custom checklist for the current feature based on user requirements.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Consumer-facing guide to hosting an interactive FS.Skia.UI app — the keyboard/pointer input surface, the preview-vs-tree render distinction, and the windowed-fullscreen blur caveat.
Build Skia-rendered FS.Skia.UI Controls, rich text, chart controls, graph controls, DataGrid, custom wrappers, and generated product examples.
Generated product guidance for Skia-rendered FS.Skia.UI Controls, rich text, chart controls, graph controls, DataGrid, and custom wrappers.
Wire a generated FS.Skia.UI product to the desktop viewer host.
Understand and work with the internal keyed VDOM diff over the lowered Control<'msg> IR (feature 067) — its key-first-then-positional matching, the NodePatch/ChildOp operation set, the totality/determinism/identity-at-rest/round-trip invariants, and the module's disposition (internal, property-tested, wired onto the live render path via RetainedRender in feature 091 and current through feature 103 — layout/bounds cache, injected-delta animation clock, visual-state cross-fade). Use when reading the diff invariants, extending the property tests, or working on the wired retained render path.
Maintainer-facing guide to the FS.Skia.UI.Controls.Elmish interactive-host seam — how runInteractiveApp drives the retained render structure each frame (RetainedRender.step over the keyed diff), advances per-identity animation clocks from an injected Tick delta, stamps runtime visual state pre-reconcile, routes keys focus-first through routeFocusedKey, and resolves pointer hits to a stable identity via retainedHitTest. Use when reading or extending the live controls host loop, the per-frame retained-state/clock/visual-state wiring, or the key/pointer routing seam.
| name | speckit-checklist |
| description | Generate a custom checklist for the current feature based on user requirements. |
| compatibility | Requires spec-kit project structure with .specify/ directory |
| metadata | {"author":"github-spec-kit","source":"templates/commands/checklist.md"} |
CRITICAL CONCEPT: Checklists are UNIT TESTS FOR REQUIREMENTS WRITING — they validate the quality, clarity, and completeness of requirements in a given domain. If your spec is code written in English, the checklist is its unit test suite: you test whether the requirements are well-written, complete, unambiguous, and ready for implementation — NOT whether the implementation works.
NOT for verification/testing:
FOR requirements quality validation:
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Check for extension hooks (before checklist generation):
.specify/extensions.yml from the project root (if present) and collect entries under the hooks.before_checklist key..specify/extensions/*/*.yml file in sorted order, parse each, and collect its hooks.before_checklist entries too — so a hook registered only in a per-extension file (e.g. the feedback extension at .specify/extensions/feedback/feedback.yml) is still discovered and runs.(extension, command) (first occurrence wins, so a hook declared in both files runs once).optional: true hook that is discovered but not executed this phase, emit one line so the skip is a visible decision: Note: optional hook {extension}:{command} is registered but was not run (skipped).enabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Execution Steps.
Setup: Run .specify/scripts/bash/check-prerequisites.sh --json from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS list.
Clarify intent (dynamic): Derive up to THREE initial contextual clarifying questions (no pre-baked catalog). They MUST:
$ARGUMENTSGeneration algorithm:
Question formatting rules:
Defaults when interaction impossible:
Output the questions (label Q1/Q2/Q3). After answers: if ≥2 scenario classes (Alternate / Exception / Recovery / Non-Functional domain) remain unclear, you MAY ask up to TWO more targeted follow‑ups (Q4/Q5) with a one-line justification each (e.g., "Unresolved recovery path risk"). Do not exceed five total questions. Skip escalation if user explicitly declines more.
Understand user request: Combine $ARGUMENTS + clarifying answers:
Load feature context: Read from FEATURE_DIR:
Context Loading Strategy:
Generate checklist - Create "Unit Tests for Requirements":
FEATURE_DIR/checklists/ directory if it doesn't exist[domain].md using a short, descriptive domain name (e.g., ux.md, api.md, security.md)CORE PRINCIPLE - Test the Requirements, Not the Implementation: Every checklist item MUST evaluate the REQUIREMENTS THEMSELVES for:
Category Structure - Group items by requirement quality dimensions:
HOW TO WRITE CHECKLIST ITEMS - "Unit Tests for English":
❌ WRONG (Testing implementation):
✅ CORRECT (Testing requirements quality):
ITEM STRUCTURE — each item should:
[Spec §X.Y] when checking existing requirements[Gap] marker when checking for missing requirementsEXAMPLES BY QUALITY DIMENSION:
Completeness:
Clarity:
Consistency:
Coverage:
Measurability:
Scenario Classification & Coverage (Requirements Quality Focus):
Traceability Requirements:
[Spec §X.Y], or a marker: [Gap], [Ambiguity], [Conflict], [Assumption]Surface & Resolve Issues (Requirements Quality Problems): Ask questions about the requirements themselves:
Content Consolidation:
🚫 ABSOLUTELY PROHIBITED (these make it an implementation test, not a requirements test):
✅ REQUIRED PATTERNS (these test requirements quality):
Structure Reference: Generate the checklist following the canonical template in .specify/templates/checklist-template.md for title, meta section, category headings, and ID formatting. If template is unavailable, use: H1 title, purpose/created meta lines, ## category sections containing - [ ] CHK### <requirement item> lines with globally incrementing IDs starting at CHK001.
Report: Output the full checklist path, item count, whether the run created or appended, and a summary of: focus areas selected, depth level, actor/timing, and any explicit user-specified must-have items incorporated.
Important: Each /speckit-checklist invocation uses a short, descriptive filename and either creates a new file or appends to an existing one. This allows multiple typed checklists (e.g., ux.md, test.md, security.md) with memorable, purpose-indicating names that are easy to navigate in the checklists/ folder. To avoid clutter, use descriptive types and clean up obsolete checklists when done.
UX Requirements Quality: ux.md
Sample items (testing the requirements, NOT the implementation):
API Requirements Quality: api.md
Sample items:
Performance Requirements Quality: performance.md
Sample items:
Security Requirements Quality: security.md
Sample items:
❌ WRONG - These test implementation, not requirements:
- [ ] CHK001 - Verify landing page displays 3 episode cards [Spec §FR-001]
- [ ] CHK002 - Test hover states work correctly on desktop [Spec §FR-003]
- [ ] CHK003 - Confirm logo click navigates to home page [Spec §FR-010]
- [ ] CHK004 - Check that related episodes section shows 3-5 items [Spec §FR-005]
✅ CORRECT - These test requirements quality:
- [ ] CHK001 - Are the number and layout of featured episodes explicitly specified? [Completeness, Spec §FR-001]
- [ ] CHK002 - Are hover state requirements consistently defined for all interactive elements? [Consistency, Spec §FR-003]
- [ ] CHK003 - Are navigation requirements clear for all clickable brand elements? [Clarity, Spec §FR-010]
- [ ] CHK004 - Is the selection criteria for related episodes documented? [Gap, Spec §FR-005]
- [ ] CHK005 - Are loading state requirements defined for asynchronous episode data? [Gap]
- [ ] CHK006 - Can "visual hierarchy" requirements be objectively measured? [Measurability, Spec §FR-001]
Key Differences:
Check for extension hooks (after checklist generation):
.specify/extensions.yml from the project root (if present) and collect entries under the hooks.after_checklist key..specify/extensions/*/*.yml file in sorted order, parse each, and collect its hooks.after_checklist entries too — so a hook registered only in a per-extension file (e.g. the feedback extension at .specify/extensions/feedback/feedback.yml) is still discovered and runs on phase completion.(extension, command) (first occurrence wins, so a hook declared in both files runs once).settings.auto_execute_hooks: true in .specify/extensions.yml, a mandatory hook (optional: false) auto-runs with no confirmation; an optional hook (optional: true) is always surfaced ("To execute: /{command}") and is never force-run by auto_execute_hooks; a hook with a non-empty condition is never evaluated by this skill — evaluation is left to the executor and the notice reports the resolved decision. When auto_execute_hooks: false, even mandatory hooks are surfaced for confirmation.(extension, command), emit one consolidated notice for the phase so the operator never hand-reconciles files — the promoted feedback hook (optional: false) appears as auto-run, never as a surfaced optional:
## Effective hooks for checklist
- {extension}:{command} — auto-run (mandatory; auto_execute_hooks=true)
- {extension}:{command} — surfaced (optional)
- {extension}:{command} — skipped (enabled: false)
- {extension}:{command} — condition-deferred
optional: true hook that is discovered but not executed this phase, emit one line so the skip is a visible decision: Note: optional hook {extension}:{command} is registered but was not run (skipped).enabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}