Skip to content

[Feature]: Clarify custom checklist ownership and lifecycle #3979

Description

@mnriem

Problem Statement

The published documentation describes /speckit.checklist as a quality gate and "unit tests for requirements," and tells users to review generated checklists before proceeding. The command templates reinforce that custom checklists capture user-supplied focus areas, risks, audiences, and must-have criteria that the standard workflow cannot infer.

However, neither the published documentation nor the executable command documentation explicitly defines who owns the checkbox state, what [x] means, or when items should be marked complete.

This is especially ambiguous because two checklist lifecycles share the same checklists/ directory and checkbox format:

  • checklists/requirements.md, created and automatically evaluated by /speckit.specify and re-evaluated by /speckit.clarify.
  • Custom checklists created by /speckit.checklist, which encode reviewer-supplied requirements-quality insights. /speckit.implement treats these as opaque gates by counting checkbox state rather than interpreting or resolving their criteria.

As a result, users can reasonably conclude that the implementation agent should check off custom checklist items, even though /speckit.checklist does not instruct the agent to evaluate them and /speckit.implement is only intended to read their status.

Proposed Solution

Make the existing implicit contract explicit across the published and executable documentation:

  • Explain that custom checklists are reviewer-owned requirements-quality review artifacts. An agent may assist with evaluation when explicitly asked, but implementation must not silently self-approve them.
  • Define [x] as "the reviewer determined this requirements-quality criterion is satisfied," not "the implementation work is complete."
  • State that /speckit.implement treats checklist files as read-only gates and must not modify their markers.
  • Distinguish the agent-maintained checklists/requirements.md lifecycle from custom checklists generated by /speckit.checklist.
  • Apply consistent wording in docs/quickstart.md, docs/reference/agentic-sdd.md, templates/commands/checklist.md, templates/checklist-template.md, and templates/commands/implement.md.

Alternatives Considered

Rely on the existing "custom checklist" and "review the generated checklist" wording as a nudge. That communicates some design intent, but it does not define ownership or state transitions and is weakened by the agent-maintained checklist using the same directory and syntax.

Separating checklist types into different directories or adding ownership metadata could make the distinction machine-readable, but that would be a larger behavioral change. This issue proposes documenting the current contract first.

Component

Documentation

AI Agent (if applicable)

All agents

Use Cases

  1. A reviewer creates a security, accessibility, compliance, or domain-specific checklist from insights unavailable to the standard workflow.
  2. A user needs to know whether unchecked items should be resolved manually, through /speckit.clarify, or by asking an agent to assist.
  3. An implementation agent encounters custom checklist files and must preserve their review state.
  4. A user needs to distinguish custom review checklists from the automatically maintained requirements.md checklist.

Acceptance Criteria

  • Published documentation distinguishes agent-maintained and custom checklist lifecycles.
  • Documentation defines custom checklist ownership and checkbox semantics.
  • The checklist command and canonical checklist template communicate the same ownership model.
  • The implement command explicitly treats checklist markers as read-only.
  • Documentation explains that checked custom criteria concern requirements quality, not implementation completion.
  • Guidance is consistent across all supported agents.

Additional Context

Raised from discussion: #2387 (reply in thread)

Follow-up clarification: #2387 (comment)

Filed on behalf of @mnriem by GitHub Copilot (model: GPT-5.6 Sol).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions